我正在通过扩展flash.display.SimpleButton
在ActionScript中创建一个按钮但是,当我在构造函数中声明某些变量时,按钮的行为并不像预期的那样,这些变量也恰好作为SimpleButton类中的属性存在。他们似乎有冲突..
这是为什么?是否应该允许本地声明的变量与具有相似名称的类属性共存?
下面的代码段可以更好地说明问题:
public class MyButton extends SimpleButton{
public function MyButton(/*..*/){
var upState:ButtonDisplayState = new ButtonDisplayState(/*..*/));
var downState:ButtonDisplayState = new ButtonDisplayState(/*..*/);
var overState:ButtonDisplayState = new ButtonDisplayState(/*..*/);
var hitTestState:ButtonDisplayState = new ButtonDisplayState(/*..*/);
super(upState, overState, downState, hitTestState);
}
}
API文档在这里(例如,查找upState):http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/SimpleButton.html#upState
谢谢,
奥德赫。
答案 0 :(得分:1)
您无法重新声明已存在的变量,无论是否为本地变量。您可以执行此类操作的唯一位置是方法参数,您可以在其中使用与本地/类变量相同的参数名称。
为什么不直接将这些状态传递给构造函数,如:
super(new ButtonDisplayState(/*..*/)), new ButtonDisplayState(/*..*/)), new ButtonDisplayState(/*..*/)), new ButtonDisplayState(/*..*/)));
或者在调用super();
之后直接设置它们:
upState = new ButtonDisplayState(/*..*/));
downState = new ButtonDisplayState(/*..*/);
overState = new ButtonDisplayState(/*..*/);
hitTestState = new ButtonDisplayState(/*..*/);