子类中的AS3吸气剂设置器

| 我知道已经对此进行了很多介绍,但是我似乎无法使其正常工作。 如何从主类监听子类以进行变量更改?
package  {

    import flash.events.*

    public class DataBase extends MovieClip  {

        private var _OPPONENTTYPE:int = 0;

            public function DataBase() {
               OPPONENTTYPE(1);
            }
        public function get OPPONENTTYPE():int {
            return _OPPONENTTYPE;
        }
        public function set OPPONENTTYPE(num:int) {
            _OPPONENTTYPE = num;
            dispatchEvent(new Event(DataBase._OPPONENTTYPE));
        }
这是到目前为止我对子类的了解,但是我似乎无法弄清楚如何从Main()侦听此变量更改,即使我已经正确调度了该事件也是如此。     
已邀请:

bab

假设Main引用了Database类,则可以执行以下操作: 首先,在数据库中声明一个公共const来保存事件的名称。这比在事件代码中使用字符串更好,因为它允许编辑器进行错误检查和自动完成。
public static const DATABASE_CHANGE:String = \"onDatabaseChange\";
现在修改您的setter以使用此const:
public function set OPPONENTTYPE(num:int) {
    _OPPONENTTYPE = num;
    dispatchEvent(new Event(DataBase.DATABASE_CHANGE));
}
在Main中,您需要侦听事件(假设您已实例化并引用了Database):
databaseRef.addEventListener(Database.DATABASE_CHANGE,dbChangeHandler);
最后,在处理程序中,通过查看事件对象的目标(将是您的数据库类)或使用设置侦听器时使用的引用来检查OPPONENTTYPE的新值:
private function dbChangeHandler(evt:Event):void
{
    //both lines output the same
    trace(evt.target.OPPONENTTYPE);
    trace(databaseRef.OPPONENTTYPE);
}
    
一种好的方法是为变量更改创建自定义事件类型
package  {  
    import flash.events.Event;
        public class VariableEvent extends Event{
            public var variableName:object;
            public var oldValue:object;
            public var newValue:object;
            static public var VALUE_CHANGE:String = \"VALUE_CHANGE\";

            public function VariableEvent(variableName:String, oldValue:object, newValue:object, bubbles:Boolean = false, cancelable:Boolean = false){
            super(VALUE_CHANGE, bubbles,cancelable);

            this.variableName = variableName;
            this.oldValue = oldValue;
            this.newValue = newValue;
        }
    }

} 
在包含以下内容的引用的MAIN类中添加事件处理程序/侦听器: mydispatcher为
mydispatcher.addEventListener(VariableEvent.VALUE_CHANGE, variableChangedListener); 
和MAIN类中的Handler函数将是
private function variableChangedListener(event:VariableEvent):void
    {
        Alert.show(event.variableName +\"Changed From \"+event.oldValue+\" To \"+event.newValue);
    }
派发事件就像从mydispatcher更改变量值一样
dispatchEvent(new VariableEvent(\"variableName\",<old Value>, <changed/new Value>));
希望能有所帮助     

要回复问题请先登录注册