如果您觉得this.buttonExample
一遍又一遍地输入太重复,只需将该对象分配给一个变量并在其余语句中使用该变量:
var b : Button = this.buttonExample;
b.buttonMode = true;
b.useHandCursor = true;
b.addEventListener(...);
正如其他人所提到的,还有with
声明,但不鼓励使用它,因为它使代码更难阅读,并可能导致奇怪的结果:
with (this.buttonExample) {
buttonMode = true;
useHandCursor = true;
addEventListener(...);
}
当然,您可以将这些建议与其他技巧结合使用,例如链接分配:
var b : Button = this.buttonExample;
b.buttonMode = b.useHandCursor = true;
b.addEventListener(...);
如果分配的值是不可变的(例如,数字和字符串,但不是数组或大多数其他对象),请非常小心地仅以这种方式链接分配,因为相同的对象将分配给左侧的所有变量。如果该值是不可变的,这无关紧要,但如果它是可变的,您最终可能会得到奇怪的结果,如下例所示:true
false
a = b = [ ];
a.push(1);
b.push(2);
trace(a); // outputs 1, 2
trace(b); // also outputs 1, 2
产生这个结果的原因是a
andb
都引用了同一个数组,并且由于数组是可变的,因此无论您如何访问对象都没有关系,它仍然会被更改。a
并且b
不要仅仅因为它们是不同的变量而引用不同的数组。
您可能认为您可以执行以下操作,但它不会起作用。
// this will NOT work
var b : Button = this.buttonExample;
(b.buttonMode = b.useHandCursor = true).addEventListener(...);
说b.buttonMode = b.useHandCursor = true
,而不是添加的原因.addEventListener(...)
是赋值表达式(例如b.buttonMode = true
)的值是分配给左侧的值(例如true
)。如果您添加.addEventListener(...)
它,您实际上是在说true.addEventListener(...)
,这显然不是您想要的。换句话说
b.buttonMode = b.useHandCursor = false;
相当于
b.useHandCursor = false;
b.buttonMode = b.useHandCursor;
希望这也应该使上面提到的警告变得清晰。