「onClipEvent」and「MovieClip.onXXX」變數範圍
我們建立一個MovieClip在Stage上,並將它命名為「a_mc」,並在此MovieClip上加些程式以便驗證。
onClipEvent(load) { var bar = 10; }
在MainTimeline[1]寫入下述程式:
a_mc.onLoad = function() { var foo = 20; }
在MainTimeline[2]寫入下述程式:
trace("a_mc(bar):"+a_mc.bar); trace("a_mc(foo):"+a_mc.foo); stop();
結果:
a_mc(bar):10 a_mc(foo):undefined
結果卻不如預期(bar=10,foo=20),這是因為任何宣告在「function」中的變數都將被視為「區域變數(local variables)」,而由於「onClipEvent」或「on」事件都必須附著在實體的「MovieClip」之上,所以無論哪一種事件,只要宣告在「MovieClip」的變數都將為「實體變數(instance variables)」。
值得一提的是「MovieClip.onXXX」的作法,其實就像是C語言中的「函式指標(function pointer)」,可以用來指向一個「function」,這也是寫Linux Kernel的相關程式時,所必要的技能。