从单个对象中移除触摸事件侦听器会使屏幕上所有其他对象失去触摸功能。

我想从一个单独的对象中移除触摸监听器,并且想要从gameloop中移除监听器,但问题是,如果我从球对象中移除触摸监听器,触摸事件监听器也会从其他对象中删除,包括我想要在下一个屏幕上继续按的按钮。以下是代码蓝图,但不是我正在使用的确切代码。请尝试解决问题.. 谢谢

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()
{}
点赞
用户2186639
用户2186639

目前您正在使用 Runtime 来处理触摸事件,因此自然会删除所有其他对象的触摸侦听器。如果您想单独操作事件侦听器,则应仅为一个对象创建事件侦听器。我的意思是像这样:

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-06 11:56:10