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