0

単一のオブジェクトからタッチ リスナーを削除し、ゲームループからリスナーを削除したいのですが、問題は、ボール オブジェクトからタッチ リスナーを削除すると、ボタンも含む他のオブジェクトからもタッチ イベント リスナーが削除されることです。を押して次の画面に進みます。以下はコードの青写真ですが、私が使用している正確なコードではありません。問題を解決してください..ありがとう

function displayScreen()
    local btnGroup = display.newGroup()
    local graphic = display.newRect( 0, 0, display.contentWidth, display.contentHeight)
    graphic:setFillColor(0, 0, 0, 50)
    btnGroup:insert(graphic)
    ball:removeEventListener("touch", moveball)
    restartMenu()
end

 function restartMenu()
    local menuGp = display.newGroup()
    graphic1 = display.newImageRect("Reset.png", 564, 216,true )
    graphic1.x = display.contentWidth / 2
    graphic1.y = display.contentHeight - display.contentHeight / 4
    graphic1:addEventListener("touch", restart)
    menuGp:insert(graphic1)
end

function restart()
{}
4

1 に答える 1

0

現在、タッチイベントにランタイムを使用しています。したがって、リスナーに触れる他のすべてのオブジェクトが削除されるのは当然です。イベント リスナーを個別に操作する場合は、1 つのオブジェクトに対してのみイベント リスナーを作成する必要があります。つまり、次のようなものです。

local ball = display.newCircle( 250, 250, 60 )
ball.x = display.contentCenterX
ball.y = display.contentCenterY
ball:setFillColor(240, 200, 0)
ball:addEventListener( "touch", ballTouchHandler )

そして、削除するために;

ball:removeEventListener( "touch", ballTouchHanler )

Runtime:addEventListener( "touch", functiıon() {} ) を使用することはまったくお勧めしません。「enterFrame」関数でのみ使用する必要があります

于 2013-10-06T11:56:10.713 に答える