作者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