国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

11.14.創建State的自定義動作(action)

2024-04-27 13:52:12
字體:
來源:轉載
供稿:網友
11.14.1. 問題
我想在進入state 時創建State 對象的自定義動作。
11.14.2. 解決辦法
創建一個IOverride 接口的實現類,重寫所有需要傳遞自定義行為的所有方法。
11.14.3. 討論
要實現額外的state 動作,你需要創建自定義IOverride 對象,當進入state 時去執行你自己的條件邏輯。任何實現此接口的對象都能被添加到state 的重寫數組中--任何組件都有下列方法:
apply(parent:UIComponent):void
該方法應用重寫,執行重寫(override)的自定義行為。將被改變的Parent 參數值會被存儲在此方法中以便當離開state 執行撤銷操作。

initialize():void
初始化重寫

remove(parent:UIComponent):void
刪除重寫。在apply() 方法中記住的值將被恢復。當進入狀態時自動調用此方法。不應直接對其進行調用

下面的例子中,實現IOverride 接口的類叫CustomOverride ,通過apply 語句應用自定義條件邏輯:
+展開
-ActionScript
package oreilly.cookbook{
import flash.display.DisplayObject;
import mx.core.UIComponent;
import mx.states.IOverride;
public class CustomOverride implements IOverride {
private var widthValue:Number;
private var _target:DisplayObject;
public function CustomOverride(target:DisplayObject = null)
{
_target = target;
}
public function get target():DisplayObject {
return _target;
}
public function set target(value:DisplayObject):void {
_target = value;
//empty
public function initialize():void {}
//here we make sure to store the value of the parent before
we change it
//so that we can use this value in the remove method
public function apply(parent:UIComponent):void {
widthValue = _target.width;
if(_target.width > 500) {
_target.width = 500;
}
}
//here we use the stored value
public function remove(parent:UIComponent):void {
_target.width = widthValue;
}
}
}

這里新的CustomOverride 類被用來改變vbox 的大小,這個類可以被擴展去使用多個目標和做更可能多的事情而不僅僅局限于改變目標寬度,這里只是為了做個簡單的演示:
+展開
-XML
<mx:states>
<mx:State name="openState">
<cookbook:CustomOverride target="{box1}"/>
</mx:State>
</mx:states>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 承德县| 如东县| 独山县| 吴江市| 尼勒克县| 西安市| 苏尼特右旗| 建始县| 阳曲县| 会东县| 红河县| 衡山县| 南部县| 阳东县| 湘潭县| 从江县| 双桥区| 顺昌县| 清苑县| 汝州市| 浏阳市| 太湖县| 高尔夫| 周宁县| 东源县| 财经| 项城市| 彭水| 英超| 广汉市| 澄城县| 美姑县| 阳春市| 灵寿县| 祁阳县| 大关县| 多伦县| 长宁区| 柘城县| 咸丰县| 宾川县|