[問題] 請教何時該用區域或全域變數

看板Flash作者 (jimi7788)時間15年前 (2010/12/02 11:36), 編輯推噓4(4016)
留言20則, 4人參與, 最新討論串1/1
小弟想請教全域、區域變數的觀念 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

12/02 13:43, , 1F
為啥要用new的 不用visible屬性?
12/02 13:43, 1F

12/02 13:50, , 2F
也是可以用visible,但這就要把2個都new好,等待呼叫
12/02 13:50, 2F

12/02 13:53, , 3F
我困感的是,一般碰到這種情形,會用區域還是全域的方式
12/02 13:53, 3F

12/02 13:54, , 4F
因為我常new一個區域變數,之後都會用getChildByName('')
12/02 13:54, 4F

12/02 13:55, , 5F
把物件找出來,也有人建議用全域變數來管理就好
12/02 13:55, 5F

12/02 13:57, , 6F
不知那一個方法比較好??@@
12/02 13:57, 6F

12/02 14:00, , 7F
我的話一定是用一個全域變數來儲存他的reference的
12/02 14:00, 7F

12/02 14:01, , 8F
不可能每次要用到都去getChildByName 太浪費效能
12/02 14:01, 8F

12/02 14:12, , 9F
如果我場景上有很多元件,且每個元件都有自已的功能
12/02 14:12, 9F

12/02 14:15, , 10F
這樣全域變數不就會很多?所以都比getChildByName節省?
12/02 14:15, 10F

12/02 17:28, , 11F
getChildByName還要花資源去搜索姓名屬性然後找到一樣的
12/02 17:28, 11F

12/02 17:29, , 12F
很多元件,類似的可以用陣列來管理吧?
12/02 17:29, 12F

12/03 05:59, , 13F
為了節省變數需要的記憶體空間 去多耗費CPU 我覺得划不來
12/03 05:59, 13F

12/03 06:00, , 14F
flash的效能瓶頸一向是卡CPU而不會是卡RAM
12/03 06:00, 14F

12/03 09:34, , 15F
像一般的menu選單,按下menu的選項後,開始new一些功能
12/03 09:34, 15F

12/03 09:36, , 16F
那這些功能,應該也要用全域的儲存它嗎~方便之後再使用
12/03 09:36, 16F

12/03 09:39, , 17F
不用重覆new 區域變數,這樣對吧?
12/03 09:39, 17F

12/03 15:13, , 18F
慘... 我最近用 getChildByName 用很大...
12/03 15:13, 18F

12/03 15:13, , 19F
這樣來說用 diction 會不會好點?
12/03 15:13, 19F

12/03 15:21, , 20F
或許可寫sceneObject的class,然後直接換物件就好了。
12/03 15:21, 20F
文章代碼(AID): #1CznGasf (Flash)