国产探花免费观看_亚洲丰满少妇自慰呻吟_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>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永宁县| 邓州市| 永和县| 宜君县| 绥芬河市| 高淳县| 浦东新区| 江陵县| 突泉县| 元阳县| 安康市| 察雅县| 玛纳斯县| 屏边| 会宁县| 乐东| 华池县| 仪陇县| 四会市| 连江县| 栾城县| 毕节市| 南雄市| 无锡市| 云安县| 泸西县| 靖州| 萍乡市| 布拖县| 肥乡县| 万荣县| 徐州市| 滦平县| 东海县| 阿巴嘎旗| 聊城市| 张家港市| 青浦区| 乡城县| 文水县| 平和县|