2011年8月31日 星期三

使用變數new物件,未清除的結果

在Flash裡,當我們使用AS來產生一個新的物件
通常都會用使用一個變數來把物件new出來,
並在這物件上加入監聽事件

var myBtn:Button=new Button()  
myBtn.addEventListener(MouseEvent.CLICK,someThingToDo);
這個已宣告的變數myBtn,已經指向了這個被產生出來的物件
如果在之後的程式做了以下動作可能會發生的狀況如下

1.在未移除原先產生物件的狀況下,若再使用同樣變數再產生物件
myBtn=new Button()
myBtn.addEventListener(MouseEvent.CLICK,doAnothingThing);
則只是把變數指到新的物件,原先的物件並不會被清除掉
畫面上會有多個物件同時並存
若還有監聽事件,則當Click任一物件時都會同時觸發所有被監聽的事件

2.若將變數設定成null再重新產生物件
myBtn=null;  
myBtnButton=new Button();
畫面上還是會保有多個物件
只是每個物件被click時只會觸發最後設定的那個listener
而非多個listener被觸發

沒有留言: