AS3 - 我可以使用 addEventListener 检测变量值的变化吗? [英] AS3 - Can I detect change of value of a variable using addEventListener?
问题描述
是否可以使用 EventListener 监听变量并检测该变量的值何时发生变化?谢谢.
Is it possible to use EventListener to Listen to a variable and detect when the value of that variable changes? Thanks.
推荐答案
如果您将所有内容包装到一个类中,这将很容易做到.我们将使用 getter/setter 方法.setter 方法将在调用时调度和事件.
This is quite easy to do if you wrap it all into a class. We will be using getter/setter methods. The setter method will dispatch and event whenever it is called.
(注意:Setter 和Getter 被视为属性).您只需分配一个值,而不是调用方法(例如 someVar = 5
而不是 someVar(5);
尽管 setter/getter 是函数/方法,但它们是像属性一样对待.
(Note: Setters and Getters are treated like properties). You merely assign a value, as opposed to calling a method (e.g someVar = 5
instead of someVar(5);
Even though setters / getters are functions/methods, they are treated like properties.
//The document class
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.EventDispatcher;
public Class TestDocClass extends Sprite
{
private var _model:Model;
public function TestDocClass():void
{
_model = new Model();
_model.addEventListener(Model.VALUE_CHANGED, onModelChanged);
}
private function onModelChanged(e:Event):void
{
trace('The value changed');
}
}
}
//The model that holds the data (variables, etc) and dispatches events. Save in same folder as DOC Class;
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class Model extends EventDispatcher
{
public static const VALUE_CHANGED:String = 'value_changed';
private var _someVar:someVarType;
public function Model():void
{
trace('The model was instantiated.');
}
public function set someVariable(newVal:someVarType):void
{
_someVar = newVal;
this.dispatchEvent(new Event(Model.VALUE_CHANGED));
}
}
}
这篇关于AS3 - 我可以使用 addEventListener 检测变量值的变化吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!