情景:
我有类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)的更改?
答案 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
根据您的要求,最好让您的事件处理程序保持静态,以减少多次执行相同的代码而不改变输出。