2

追加したいクラスのインスタンスのこの2次元配列(主にほんの少しのテキスト)があります...

         addEventListener("tap", functiontocall)

すべてのインスタンスに(したがって、1つをタップすると色などが変わります)これをいくつかの場所に追加しようとしましたが、どれも機能しませんでした..クラス自体、クラスのコンストラクター関数、および配列。何か案は?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 に答える