作者forestluch (小强)
看板Flash
标题[问题] 关於for回圈在switch case的使用
时间Wed Mar 13 15:53:17 2013
想请教关於for的用途
我有一个ActionScript
大致上的架构是
放入数个流水号命名的实体
每个实体个别独有的变数也使用流水号做对应
每个实体都侦听并执行 同一个function
然後function里面 则用event.currentTarget
做switch case 判断当侦听启动时该对哪个实体做什麽..
(也就是按钮1~10都走同的一function 但靠着switch 决定哪个按钮该动作)
当元件数量一多时 重复相似性极高的程式码相当碍眼
因此想用一个变数来决定实体放置的数量
用for来做简化程式码 让该变数决定for执行的次数
...
侦听的部分 还有个别变数的运算都是OK的
原本1-20行 只要写一次 让for执行实体数量次数 决能够达成
但似乎没办法用for 宣告变数命名
var a1, a2, a3 //for(i=1;i<=3;i++){ it doesn't work }
查了一下资料发现C/C++不允许这种作法 那ActionScript3.0 行吗?
如果行该怎麽做?
这部分後来用矩阵的方法达成了.
array(i) for(i=0;i<=1;i++){array[i]=done}
在最重要的switch判断式
case 1:
陈述式
break;
case 2:
陈述式
break;
...
这部分有办法用for产生吗?
例如欲放置100个实体
已经可以让for产生100个实体以及个别需要用到的变数运算 侦听
但这个switch里面 case1-100 也能够让for产生
而不用100行以上的程式码
我目前做出来就是error
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.167.153.186
※ 编辑: forestluch 来自: 118.167.153.186 (03/13 15:57)
※ 编辑: forestluch 来自: 118.167.153.186 (03/13 15:59)
1F:推 zpl:不同case之间执行的内容有相似性吗? 03/13 16:29
switch (event.currentTarget)
{
case op1 :
activeCode = 1;
opTargetWidth[activeCode] = actTargetWidth;
picTargetX = picIntTargetX -((activeCode-1)*pic_mix.pic1.width-5);
break;
case op2 :
activeCode = 2;
opTargetWidth[activeCode] = actTargetWidth;
picTargetX = picIntTargetX -((activeCode-1)*pic_mix.pic1.width-5);
break;
}
这是改写前的程式码
基本上执行的动作都是一样的
只是 是 谁 要执行
所有的按钮监听都执行这个function
然後function执行时 透过switch 找到 现阶段是谁在触发
并给予一个变数 activeCode 这个变数是用来呼叫流水号的实体及其变数
因为前面在宣告运算侦听都用for完成了
精简了大幅的程式码 所以希望这个switch也能比照精简
※ 编辑: forestluch 来自: 1.162.152.95 (03/13 20:29)
2F:推 love112302:不知道可不可以用 event.currentEventName.replace 03/13 21:18
3F:→ love112302:.replace("op","") 变成"1" 再放到你的阵列 03/13 21:19
4F:→ love112302:有点忘了切却得名子 但是如果是我应该会这样做 03/13 21:20
5F:→ love112302:才学浅 有错见谅= = 03/13 21:20
6F:→ zpl:看起来你需要的是取得activeCode的方式对吧 03/13 21:35
7F:→ zpl:activeCode = int(event.currentTarget.name.substr(2)); 03/13 21:35
是的 如果我建立的10个按钮
op1, op2, op3,.... op10
同时他们也各有对应的变数
var1, var2, .....var10
但侦听的结果全都导向同一个 function
要用一个function来做多个按钮的动作
我想到的便是在这个function里包下每个按钮的动作
并且利用switch 的 event.currentTarget 来做判别
将判别的各个结果定义成一个变数 activeCode
之後利用["op"+activeCode]的方式去执行动作还有变数的计算
因为这样
每个case的内容几乎是一样的 差别在於是哪个按钮和底下的变数做动作
目前为止是OK的 差在 用for 改写switch这段
※ 编辑: forestluch 来自: 1.162.152.95 (03/13 21:49)
8F:推 love112302:ㄚㄚ 都没想到 subString 03/13 21:47
嗯 谢谢 zpl 和 love112302 我试试看^^
※ 编辑: forestluch 来自: 1.162.152.95 (03/13 21:50)