看板 Flash 關於我們 聯絡資訊
小弟想請教全域、區域變數的觀念 swc裡有2個sprite物件,分別是mcStop跟mcPlay 在我的程式中只要click stage,就會new一個mcStop或mcPlay var mc:Sprite = (mcStop)? new mcPlay():new mcStop(); mc.name = 'mc'; 但我無法控制user的使用行為,若user很常click stage那麼出現mc的次數就會很頻繁 假設我把mc設為全域,要的時厚就捉得到,這樣比較好?嗎 還是設為區域,在new下一次mc前先刪除,再new if(this.getChildByName('mc') != null) { this.removeChild(this.getChildByName('mc')); } var mc:Sprite = (mcStop)? new mcPlay():new mcStop(); 不知道那種做法比較節省記憶體 麻煩有經驗的大大給小弟一個觀念~ 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.131.226
scars:為啥要用new的 不用visible屬性? 12/02 13:43
jimi7788:也是可以用visible,但這就要把2個都new好,等待呼叫 12/02 13:50
jimi7788:我困感的是,一般碰到這種情形,會用區域還是全域的方式 12/02 13:53
jimi7788:因為我常new一個區域變數,之後都會用getChildByName('') 12/02 13:54
jimi7788:把物件找出來,也有人建議用全域變數來管理就好 12/02 13:55
jimi7788:不知那一個方法比較好??@@ 12/02 13:57
scars:我的話一定是用一個全域變數來儲存他的reference的 12/02 14:00
scars:不可能每次要用到都去getChildByName 太浪費效能 12/02 14:01
jimi7788:如果我場景上有很多元件,且每個元件都有自已的功能 12/02 14:12
jimi7788:這樣全域變數不就會很多?所以都比getChildByName節省? 12/02 14:15
dsmwang:getChildByName還要花資源去搜索姓名屬性然後找到一樣的 12/02 17:28
dsmwang:很多元件,類似的可以用陣列來管理吧? 12/02 17:29
scars:為了節省變數需要的記憶體空間 去多耗費CPU 我覺得划不來 12/03 05:59
scars:flash的效能瓶頸一向是卡CPU而不會是卡RAM 12/03 06:00
jimi7788:像一般的menu選單,按下menu的選項後,開始new一些功能 12/03 09:34
jimi7788:那這些功能,應該也要用全域的儲存它嗎~方便之後再使用 12/03 09:36
jimi7788:不用重覆new 區域變數,這樣對吧? 12/03 09:39
STARGAZERs:慘... 我最近用 getChildByName 用很大... 12/03 15:13
STARGAZERs:這樣來說用 diction 會不會好點? 12/03 15:13
dsmwang:或許可寫sceneObject的class,然後直接換物件就好了。 12/03 15:21