корона сдк. addEventListener коснитесь многих экземпляров класса

У меня есть этот двумерный массив экземпляров класса (в основном это просто текст), который я хотел бы добавить...

         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 строк кода! Хотя, помимо того, что это глупо, это было бы нехорошо, поскольку я в конечном итоге хочу, чтобы событие запускало функцию внутри самого конкретного объекта.


person Guye Incognito    schedule 13.07.2012    source источник
comment
Код, который вы закомментировали в цикле, не соответствует коду, который вы поместили после цикла.   -  person Mud    schedule 14.07.2012
comment
Вы имеете в виду имя функции? У меня просто было несколько тестовых функций с разными именами, спасибо   -  person Guye Incognito    schedule 14.07.2012


Ответы (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

Продолжайте кодировать ...... :)

person Krishna Raj Salim    schedule 12.07.2013