如果你覺得一遍一遍輸入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
和b
均引用同樣的數組,因爲數組是可變的,所以訪問對象的方式並不重要,它仍然會被改變。 a
和b
不僅僅因爲它們是不同的變量而引用不同的數組。
你可能認爲你可以做下面的事情,但它會而不是的工作。
// this will NOT work
var b : Button = this.buttonExample;
(b.buttonMode = b.useHandCursor = true).addEventListener(...);
爲什麼它說,但不添加.addEventListener(...)
是一個賦值表達式(例如b.buttonMode = true
)的值是分配給左側(例如true
)的值的原因。如果你添加.addEventListener(...)
到你基本上說的true.addEventListener(...)
,這顯然不是你想要的。換句話說
b.buttonMode = b.useHandCursor = false;
相當於
b.useHandCursor = false;
b.buttonMode = b.useHandCursor;
其中應該有希望也會讓上面提到平原的注意事項。
它爲什麼要工作? – sharvey 2010-05-10 15:47:39
我同意s.harvey,你不能只是彌補的東西,並期望它會工作。 – davr 2010-05-11 01:45:51