[問題] 關於for迴圈在switch case的使用

看板Flash作者 (小強)時間11年前 (2013/03/13 15:53), 編輯推噓3(305)
留言8則, 2人參與, 最新討論串1/3 (看更多)
想請教關於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)

03/13 16:29, , 1F
不同case之間執行的內容有相似性嗎?
03/13 16:29, 1F
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)

03/13 21:18, , 2F
不知道可不可以用 event.currentEventName.replace
03/13 21:18, 2F

03/13 21:19, , 3F
.replace("op","") 變成"1" 再放到你的陣列
03/13 21:19, 3F

03/13 21:20, , 4F
有點忘了切卻得名子 但是如果是我應該會這樣做
03/13 21:20, 4F

03/13 21:20, , 5F
才學淺 有錯見諒= =
03/13 21:20, 5F

03/13 21:35, , 6F
看起來你需要的是取得activeCode的方式對吧
03/13 21:35, 6F

03/13 21:35, , 7F
activeCode = int(event.currentTarget.name.substr(2));
03/13 21:35, 7F
是的 如果我建立的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)

03/13 21:47, , 8F
ㄚㄚ 都沒想到 subString
03/13 21:47, 8F
嗯 謝謝 zpl 和 love112302 我試試看^^ ※ 編輯: forestluch 來自: 1.162.152.95 (03/13 21:50)
文章代碼(AID): #1HG31n9e (Flash)
文章代碼(AID): #1HG31n9e (Flash)