2

我有一个类实例的二维数组(主要是一些文本)我想添加......

         addEventListener("tap", functiontocall)

到所有实例(所以当你点击一个它会改变颜色和东西)我尝试在几个地方添加它,但它们都没有工作。在类本身,类构造函数中,以及在我的循环中生成大批。有任何想法吗?这是for循环顺便说一句...

    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 行代码!尽管除了愚蠢之外,这并不好,因为我最终希望事件触发特定对象本身内的函数。

4

1 回答 1

1

试试下面的代码。这可能会帮助您:

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

继续编码............ :)

于 2013-07-12T04:33:11.930 回答