ActionScript 3.0类扩展

时间:2015-01-26 16:21:01

标签: actionscript-3

情景:

我有类characterObject和n类扩展(cat,dog,bird,n ...)

public class characterObject
{
    public static var totalCounter:int;
}
public class cat extends characterObject 
public class dog extends characterObject 
public class bird extends characterObject

扩展类是否可以在具有或不包含事件的主类中监听对静态变量(例如totalCounter)的更改?

1 个答案:

答案 0 :(得分:0)

使用getter / setter函数和事件的组合可以实现这一点。

动作脚本中的Getters和Setter是可以像变量一样被访问的函数,使您能够对变量执行函数。

public class characterObject
{
    private static var _totalCounter:int;
    protected static var internalDispatcher:EventDispatcher = new EventDispatcher();
    public static function get totalCounter():int
    {
        return _totalCounter;
    }
    public static function set totalCounter(value:int):void
    {
        _totalCounter = value;
        var event:Event = new Event("totalCounterChanged");
        internalDispatcher.dispatchEvent(event);
    }
}

正如您所看到的,我们有一个名为protected static的{​​{1}}事件调度程序,只有扩展了internalDispatcher类,我们才能侦听来自此对象的事件。通过隐藏getter / setter后面的真characterObject,只要有什么东西改变它的值,我们就可以发送一个事件。

然后我们可以在扩展类中监听此事件:

totalCounter

根据您的要求,最好让您的事件处理程序保持静态,以减少多次执行相同的代码而不改变输出。