Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash,ActionScript 3:将变量定义为来自其创建者的变量,而无需经常使用creator.var_Flash_Actionscript 3_Variables_Composition - Fatal编程技术网

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
}