国产探花免费观看_亚洲丰满少妇自慰呻吟_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>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南皮县| 黎城县| 嘉善县| 体育| 米泉市| 萨嘎县| 远安县| 亚东县| 宁武县| 科尔| 宜阳县| 韶山市| 岑溪市| 唐山市| 岳阳市| 溆浦县| 彭泽县| 惠安县| 宝兴县| 鹰潭市| 耒阳市| 北海市| 澄江县| 兰溪市| 阳朔县| 清水县| 宁晋县| 旌德县| 济源市| 湛江市| 西畴县| 彭水| 连州市| 台山市| 栾城县| 宣威市| 安泽县| 陕西省| 临漳县| 南部县| 庄浪县|