函數取名用陣列方法?

看板Flash作者 (奇寶~)時間11年前 (2013/12/09 22:31), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
晚安 假設小弟畫面有30個相同的元件 要作成滑鼠移到不同位置上的元件上 即顯示不同的提示框 元件為playitem[k].mc 要執行的函數為 visibleno[k] 小弟在這一段前,一開始讓visibleno變成陣列,接著再把它變成"文字" var k:int=1; for (k=1; k <= 31;k++) { var visibleno:Array=new Array(); visibleno=new textField(); 後來失敗了 錯誤在於 playitem[k].mc.addEventListener(MouseEvent.MOUSE_OVER,visibleno[k]);//監聽 function visibleno[k](me:Event):void //函數名為visibleno[k] ^^^^^^ 這裡不能有[],改成[1]也不行, 顯示是格式的問題 果然把visibleno[k],換成visibleno1就可以了 但其他的k就作不到了 { tipbox[k].visible= true;//顯示第k個提示框 } } ------------------------------------------------------------------- 後來小弟似乎覺得不對,改成 小弟在這一段前,一開始讓visibleno變成陣列,接著再把它變成"函數" var k:int=1; for (k=1; k <= 31;k++) { var visibleno:Array=new Array(); playitem[k].mc.addEventListener(MouseEvent.MOUSE_OVER,visibleno[k]);//監聽 function visibleno[k](me:Event):void //函數名為visibleno[k] visibleno[k]=function():void { tipbox[k].visible= true;//顯示第k個提示框 } } 但是這次的錯誤是 參數 listener 不能是 Null 請高手協助,是我觀念錯誤還是哪寫錯了 不然只能寫30次了@@" 感恩 ----------------------------------------------------------- 後續 C大說對了,監聽時,visibleno[k]這個function仍未定義,所以失敗 後來小弟決定先定義visibleno[k],再監聽程式碼改成如下 var tipbox:Array=new Array(24); //這是tipbox的宣告 var k=1; for (k=1; k <2 ;k++) -------------------//這邊改為k最大只能1的狀況來測 ^^^^^ { var visibleno:Array=new Array(30); function visibleno[k](me:Event):void //函數名為visibleno[k] visibleno[k]=function():void { 列出k-----追蹤k值的B點 tipbox[k].visible= true;//顯示第k個提示框 ^^^^^^^^ } playitem[k].mc.addEventListener(MouseEvent.MOUSE_OVER,visibleno[k]);//監聽 列出k------追蹤k值的A點 } 此次仍是錯誤,顯示 詞彙未定義且沒有屬性 小弟後來發現,A點追蹤出來的K值正常,都是1 B點的K值,在滑入滑鼠後顯示,竟然是 2 !!!!!! @@" 但K值小弟在一開始有限制,visbleno函數中也沒有任何程式碼 就只有新加的追k值和顯示tipbox而已 有高手看得出問題在哪嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.24.226

12/10 05:35, , 1F
var visibleno:Array = new Array(30); 就好了...
12/10 05:35, 1F

12/10 05:36, , 2F
"listener 不能是 Null" 原因是你在addEventListener
12/10 05:36, 2F

12/10 05:36, , 3F
才定義 visibleno[k] = function
12/10 05:36, 3F
※ 編輯: mucoci 來自: 218.173.24.226 (12/10 14:30)

12/10 16:24, , 4F
for (k=1; k <2 ;k++) 迴圈結束後k就已經是2了
12/10 16:24, 4F

12/11 15:36, , 5F
for的定義,不是即將變2所以跳開,而是因為變2了所以
12/11 15:36, 5F

12/11 15:37, , 6F
k<2不成立所以跳開,for外trace(k)一定是2
12/11 15:37, 6F

12/18 09:30, , 7F
為甚麼不把 k 丟給 function,然後在 function 裡做處理?
12/18 09:30, 7F
文章代碼(AID): #1IfTGpF9 (Flash)
文章代碼(AID): #1IfTGpF9 (Flash)