在 Corona SDK 中,将“tap”事件监听器添加到一个类的多个实例中。

我有一个实例数组,是一个类的实例(主要是一些文本)。我想添加以下内容...

         addEventListener("tap", functiontocall)

到所有实例中(所以当你点击其中一个时,它会改变颜色等等)我尝试在几个地方添加它,但都没有成功。在类本身、在类构造函数中、以及在生成数组的循环中。有什么想法吗?下面是循环代码...

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

点赞
用户1979583
用户1979583

尝试以下代码。这可能会对你有所帮助:

local mainarray = {}
for x = 1, 5, 1 do
    mainarray[x] = {}      -- 观察初始化在哪里 --
    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-12 04:33:11