0

私は問題を抱えています(明らかに:P)

ミニゲームを作成しています。Object-Aをタッチすると、Object-Bが作成されます。N回タッチすると、N個のObject-Bが作成されます。

(Object-Bは私のゲームではバブルです)

だから、私はバブル(オブジェクト-B)に触れると、それが消えるか、何らかのアクションを実行しようとします。Object-Bを配列に追加してみます

local t = {}

。。。

bur = display.newImage("burbuja.png")
table.insert(t,bur)

そして、私が書いたeventListenersがある場所:

for i=1, #t do
bur[i]:addEventListener("tap",reventar(i))
end

と私の関数'reventar'

local function reventar (event,id)
table.remove(t,id)
end

私は迷子になり、私だけが泡を消したいのです。

4

1 に答える 1

1

あなたはおそらくこのようなことをしたいと思うでしょう:

local t = {}

bur = display.newImage("burbuja.png")
table.insert(t,bur)

-- declaring the function first so it can be used later in the for loop
local function reventar(event)
    t[event.target.id] = nil         -- We remove object from table
    event.target:removeSelf()        -- Also remember to remove from display
end

for i=1,#t do
    t[i].id = i
    t[i]:addEventListener("tap", reventar)
end

お役に立てれば。

編集

オブジェクトをループしたい場合に適しているので、この方法で行います。

local t = {}

-- declaring the function first so it can be used later
local function reventar(event)
    event.target.kill = true     -- Mark the clicked object for later destruction
end

bur = display.newImage("burbuja.png")
bur:addEventListener("tap", reventar)
table.insert(t,bur)

local function loop(event)
    for i = #t, 1, -1 do
        local object = t[i]

        -- Do stuff to object here, such as object.y = object.y + 1

        if object.kill then   -- Check if object is marked for destruction
            local child = table.remove(t, i)    -- Remove from table
            if child ~= nil then
                -- Remove from display and nil it
                child:removeSelf()
                child = nil
            end
        end
    end
end

Runtime:addEventListener("enterFrame", loop) -- Remember to remove this when no longer needed
于 2012-06-20T23:02:48.063 に答える