作者jimi7788 (jimi7788)
看板Flash
標題[問題] 請教何時該用區域或全域變數
時間Thu Dec 2 11:36:02 2010
小弟想請教全域、區域變數的觀念
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
1F:推 scars:為啥要用new的 不用visible屬性? 12/02 13:43
2F:→ jimi7788:也是可以用visible,但這就要把2個都new好,等待呼叫 12/02 13:50
3F:→ jimi7788:我困感的是,一般碰到這種情形,會用區域還是全域的方式 12/02 13:53
4F:→ jimi7788:因為我常new一個區域變數,之後都會用getChildByName('') 12/02 13:54
5F:→ jimi7788:把物件找出來,也有人建議用全域變數來管理就好 12/02 13:55
6F:→ jimi7788:不知那一個方法比較好??@@ 12/02 13:57
7F:推 scars:我的話一定是用一個全域變數來儲存他的reference的 12/02 14:00
8F:→ scars:不可能每次要用到都去getChildByName 太浪費效能 12/02 14:01
9F:→ jimi7788:如果我場景上有很多元件,且每個元件都有自已的功能 12/02 14:12
10F:→ jimi7788:這樣全域變數不就會很多?所以都比getChildByName節省? 12/02 14:15
11F:→ dsmwang:getChildByName還要花資源去搜索姓名屬性然後找到一樣的 12/02 17:28
12F:→ dsmwang:很多元件,類似的可以用陣列來管理吧? 12/02 17:29
13F:推 scars:為了節省變數需要的記憶體空間 去多耗費CPU 我覺得划不來 12/03 05:59
14F:→ scars:flash的效能瓶頸一向是卡CPU而不會是卡RAM 12/03 06:00
15F:→ jimi7788:像一般的menu選單,按下menu的選項後,開始new一些功能 12/03 09:34
16F:→ jimi7788:那這些功能,應該也要用全域的儲存它嗎~方便之後再使用 12/03 09:36
17F:→ jimi7788:不用重覆new 區域變數,這樣對吧? 12/03 09:39
18F:推 STARGAZERs:慘... 我最近用 getChildByName 用很大... 12/03 15:13
19F:→ STARGAZERs:這樣來說用 diction 會不會好點? 12/03 15:13
20F:→ dsmwang:或許可寫sceneObject的class,然後直接換物件就好了。 12/03 15:21