1

テーブルを EventListener として追加するにはどうすればよいですか? hello-world プロジェクトとしてブレイクアウト ゲームに取り組んでおり、「ダブル ボール」の効果を追加したいと考えています。基本的に、ボールを追加してballs table、ボールの1つがレンガに当たるかどうかを確認したい

私のコードは

balls["ball"]:addEventListener( "collision", removeBricks )

しかし、次のことを試してみると:

balls:addEventListener( "collision", removeBricks )

私は得ていますRuntime error ...\main.lua:753: attempt to call method 'addEventListener' (a nil value) stack traceback:

私が試したこと:

local balls = {}

balls["ball"] = crackSheet:grabSprite("ball_normal.png", true)
balls["ball"].name = "ball"

    function removeBricks(event)

            if event.other.isBrick == 1 then
                remove brick...
            end
    end

balls.collision = removeBricks
balls:addEventListener( "collision", removeBricks )
4

3 に答える 3

2

テーブルにイベント リスナーを追加することはできません。ブロックとボールの衝突を確認したい場合は、すべてのボールまたはすべてのブロックにイベント リスナーを追加する必要があります。

于 2013-07-03T21:55:32.287 に答える
0

テーブルにボールを追加したい場合は、テーブルにオブジェクトを挿入できます

local ballsTable = {}

function addBall()
    local ball = crackSheet:grabSprite("ball_normal.png", true)
    ball.name = "ball"

    ball.collision = function(self, event)
        if event.other.isBrick == 1 then
            event.other:removeSelf()
        end
    end
    ball:addEventListener( "collision" )

    table.insert(ballsTable, ball)
end
于 2013-07-04T04:06:40.027 に答える