2012-07-13 25 views
1

我有這2類的實例的三維陣列(主要是隻是有點文本) 我想補充...corona sdk。的addEventListener「自來水」一類的許多情況下

  addEventListener("tap", functiontocall) 

到所有的實例(所以當你點擊一個它改變顏色和東西) 我試着在幾個地方添加這個,並沒有一個工作..在類本身,在類構造函數,並在我的循環生成陣列。有任何想法嗎? 繼承人的for循環BTW ...

mainarray = {} 

    for x = 1, 5, 1 do 
    mainarray[x] = {} 

    for y = 1, 5, 1 do 
    mainarray[x][y] = diceclass.new(x,y) 
      --mainarray[x][y].dicetext:addEventListener("tap", bloop) I tried this and it didnt work. 
    end 
    end 

奇怪的是,如果我把這些在後來他們實際工作!但它不工作在我的循環...

mainarray[1][1].dicetext:addEventListener("tap", bloop) 
    mainarray[1][2].dicetext:addEventListener("tap", bloop) 

所以我可以添加25行代碼!雖然除了愚蠢之外,這並不會很好,因爲我最終希望事件在特定對象本身內觸發一個函數。

+0

你在循環不會你在循環之後把代碼匹配註釋掉的代碼。 – Mud 2012-07-13 23:48:43

+0

你的意思是函數名?我只是有幾個不同名稱的測試函數,謝謝 – 2012-07-14 00:06:47

回答

0

請嘗試下面的代碼。這可以幫助你:

local mainarray = {} 
for x = 1, 5, 1 do 
mainarray[x] = {}  -- See where it is initialized -- 
for y = 1, 5, 1 do 
    mainarray[x][y] = display.newText(x.."|"..y,10,10,nil,10) 
    mainarray[x][y].x = 20+math.random(300) 
    mainarray[x][y].y = 20+math.random(460) 
    mainarray[x][y].tag = x.."|"..y 
end 
end 

local function printTag(e) 
    print(e.target.tag) 
    return true; 
end 
for x = 1, 5, 1 do 
for y = 1, 5, 1 do 
    mainarray[x][y]:addEventListener("tap",printTag) 
end 
end 

保持編碼........... :)