Flash,ActionScript 3:将变量定义为来自其创建者的变量,而无需经常使用creator.var
我正在尝试将我的代码分成几个类。但有一个问题真正困扰着我。当我为函数创建一个类时,我给了它自己的舞台。像这样Flash,ActionScript 3:将变量定义为来自其创建者的变量,而无需经常使用creator.var,flash,actionscript-3,variables,composition,Flash,Actionscript 3,Variables,Composition,我正在尝试将我的代码分成几个类。但有一个问题真正困扰着我。当我为函数创建一个类时,我给了它自己的舞台。像这样 dragf:Dragfunctions = new Dragfunctions(this) 在课堂上我用这个 var stage:Object; public function Dragfunctions(stage:Object) { this.stage = stage; } 如您所见,我现在可以使用stage.var1=“hi
dragf:Dragfunctions = new Dragfunctions(this)
在课堂上我用这个
var stage:Object;
public function Dragfunctions(stage:Object)
{
this.stage = stage;
}
如您所见,我现在可以使用stage.var1=“hi”调用stage的变量
但是当我多次需要调整变量时,它会变得非常混乱
有一种方法可以告诉你,当我给var1打电话时,他知道我指的是stage.var1,而不需要给stage打电话。其:
var var1 = stage.var1
然后使用
stage.var1 = var1
但这也很不方便,还有更好的方法吗?是的,使用getter和setter(它们提供类似字段的语义,但允许您在使用赋值时执行自定义逻辑):
看看你的代码,我想也许你的类设计需要重新思考。也许您的stage是某种显示对象,我假设Dragfunctions是一个类,它为该显示对象提供某种拖动功能。最好创建DisplayObject(或Sprite等)的子类,并在其中实现拖动功能。这样,就不需要通过Dragfunctions类对DisplayObject属性进行隧道。通常,如果需要在容器中重新实现包含的类实例的接口,继承可能是更好的选择。
function set var1(val:SomeType):void
{
stage.var1=val;
}
function get var1():SomeType
{
return stage.var1;
}
function doStuff():void
{
var1=new SomeType(); //this results in call to "set" method
var st:SomeType=var1; //this results in call to "get" method
}