Actionscript 3 ActionScript通过更改公共变量调用私有函数?
我以前从来没有试过这样做,所以我的头有点晕。我希望在myClass自定义类中启用一个名为enabled的公共布尔值。如果调用它进行更改,如何从更改中触发函数Actionscript 3 ActionScript通过更改公共变量调用私有函数?,actionscript-3,variables,public,Actionscript 3,Variables,Public,我以前从来没有试过这样做,所以我的头有点晕。我希望在myClass自定义类中启用一个名为enabled的公共布尔值。如果调用它进行更改,如何从更改中触发函数 我应该向变量添加Event.CHANGE事件侦听器吗?我可以这样做吗?或者有更标准的方法吗?我们通常使用属性来实现这一点。 属性就像外部的公共变量——您可以设置instance.enabled=true等等。。但是您可以将属性定义为类的getter和/或setter函数。 它们是在值更改时执行自定义逻辑的最佳位置 例如: public cl
我应该向变量添加Event.CHANGE事件侦听器吗?我可以这样做吗?或者有更标准的方法吗?我们通常使用属性来实现这一点。
属性就像外部的公共变量——您可以设置
instance.enabled=true代码>等等。。但是您可以将属性定义为类的getter和/或setter函数。
它们是在值更改时执行自定义逻辑的最佳位置
例如:
public class CustomClass {
private var _enabled:Boolean = false;
public function set enabled(value:Boolean):void {
trace('CustomClass.enabled is now', value);
this._enabled = value;
}
public function get enabled():Boolean {
trace('CustomClass.enabled was retrieved');
return this._enabled;
}
}
var object:CustomClass = new CustomClass();
object.enabled = false;
if (object.enabled) {
...
}
请注意,它们不能与您的私有变量具有相同的名称,并且您不需要同时定义它们。实际上,setter/getter甚至不需要变量。您可以像使用任何函数一样使用它们——它们只是为您提供了不同的语法。
例如:
public class CustomClass {
private var _enabled:Boolean = false;
public function set enabled(value:Boolean):void {
trace('CustomClass.enabled is now', value);
this._enabled = value;
}
public function get enabled():Boolean {
trace('CustomClass.enabled was retrieved');
return this._enabled;
}
}
var object:CustomClass = new CustomClass();
object.enabled = false;
if (object.enabled) {
...
}
它们非常适合公开一个简单的API,如果类的内部必须更改,则可以避免重写外部代码
AS3引用和。他不希望在属性更改时调用函数,这样当对象的启用被更改时(动态地?),就会有东西侦听更改吗?如果是这样,我误解了他的意思,可以进行setter函数调用,或者实际包含根据新的set值处理更改的代码。这是AS3 API使用的代码格式吗?这样我们就可以调用myprite.alpha=0.5或myTextField.enabled=true之类的属性?是的,这就是为什么可以覆盖它们——属性的另一个优点。如果您需要外部的更改事件,您仍然可以实现EventDispatcher接口,并从setter发送事件。。。很简单。