函數取名用陣列方法?
晚安
假設小弟畫面有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
12/10 05:35, 1F
→
12/10 05:36, , 2F
12/10 05:36, 2F
→
12/10 05:36, , 3F
12/10 05:36, 3F
※ 編輯: mucoci 來自: 218.173.24.226 (12/10 14:30)
推
12/10 16:24, , 4F
12/10 16:24, 4F
→
12/11 15:36, , 5F
12/11 15:36, 5F
→
12/11 15:37, , 6F
12/11 15:37, 6F
→
12/18 09:30, , 7F
12/18 09:30, 7F
Flash 近期熱門文章
PTT數位生活區 即時熱門文章