「MovieClip」、「Button」對於「on」事件處理的變數範圍
我們建立一個MovieClip及一個Button在Stage上,並將MovieClip命名為「a_mc」,然後在MovieClip及Button上各別加些程式以便驗證。
MovieClip
on(release) { bar = 10; trace(this); }
Button
on(release) { foo = 5; trace(this); }
最後再額外多建立一個Button,用來驗證變數的範圍~
測試用的Button
on(release) { trace(foo); trace(a_mc.bar); }
接著依序點擊「MovieClip」、「Button」以及「測試用的Button」,結果如下:
_level0.a_mc _level0 5 10
從結果我們就可以了解,寫在「MovieClip」和「Button」的變數範圍是不一樣的,寫在「MovieClip」的變數範圍就如同「事件處理-「onClipEvent」vs.「MovieClip.onXXX」變數範圍」這篇所說明的,相對來說「Button」的情況較為特殊,也就是說寫在「Button」上的變數範圍,其實就是隸屬於「_root」的實體變數,更明確的說「_root」相等於MainTimeline的「this」,然而MainTimeline的「this」又是個「MovieClip」~
關於MainTimeline中的「this」,可以參考「ActionScript 2 this vs. ActionScript 3 this」這篇的說明~