0

我在我的 as3 代码中使用 get 和 setter 来编辑另一个类的值(因为这些变量是共享的)我不喜欢每次都在我的代码中放入 stage.sharedVar.isScrabble 来更改变量,所以我使用了 get/set 函数

见下文

private function get isScrabble(){return stage.sharedVar.isScrabble;} 
private function set isScrabble(val){stage.sharedVar.isScrabble = val;}  

private function get superGrid(){return stage.sharedVar.superGrid} 
private function set superGrid(val){stage.sharedVar.superGrid = val;} 

private function get gridSize(){return stage.sharedVar.gridSize} 
private function set gridSize(val){stage.sharedVar.gridSize = val}

private function get blokDefaultWidth(){return stage.sharedVar.blokDefaultWidth} 
private function set blokDefaultWidth(val){stage.sharedVar.blokDefaultWidth = val}

private function get blokDefaultHeight(){return stage.sharedVar.blokDefaultHeight} 
private function set blokDefaultHeight(val){stage.sharedVar.blokDefaultHeight = val}

正如您所看到的,每次“return stage.sharedVar”时它都有很多重复的代码。并且“stage.sharedVar.”+值+“= val”不断返回。

我想知道是否有其他方法可以创建这些获取/设置?就像是?:

private function get variable1(){getValue("hisOwnFunctionName")} 
private function set variable1(val){setValue("hisOwnFunctionName")}

等等??

谢谢,马蒂

4

3 回答 3

1

如果我理解您的问题,您只想在一个对象上获取和设置多个属性。根据您的情况,您可以尝试:

private function setProperty(name:Object,value:Object):void {
    stage.sharedVar[name]=value;
}
private function getProperty(name:Object):Object {
    return stage.sharedVar[name];
}
private function example():void {
    setProperty("foo","bar");
    trace(getProperty("foo")); //prints: bar
}

这些功能将让您设置和访问所需的属性,并且您不必不断更改功能。这确实意味着如果您将 superGrid 更改为其他东西,您不能只更改函数,您必须在使用 get 和 setProperty 的任何地方进行更改。但这确实意味着您不必继续编写新函数。

希望这可以帮助。

于 2010-07-05T16:36:08.933 回答
1

如果您使用 flex builder,请从http://download.eclipse.org/releases/galileo/下载 Web 标准工具包,并使用“snippets”为您编写这些工具包。

于 2010-07-04T01:57:00.580 回答
1

否则,如果您确实需要在运行时在程序中执行此操作,您可以制作一个包装代理类来执行各种操作: http: //ltslashgt.com/2008/01/24/proxy-class-as3 /

于 2010-07-04T02:00:22.603 回答