我可以通过触摸它并沿x轴拖动来移动盒子,但我希望能够将它从一侧轻弹到另一侧。这有一个简单的解决方案吗?
local box = display.newRect( 0, 0, 50, 50)
box:setFillColor( math.random(0,255), math.random(0,255), math.random(0,255) )
physics.addBody( box, { density=3.0, friction=0.5 } )
box.gravityScale = 0.0
function box:touch( event )
if event.phase == "began" then
self.markX = self.x
elseif event.phase == "moved" then
local x = (event.x - event.xStart) + self.markX
self.x = x
end
return true
end
box:addEventListener( "touch", box )
答案 0 :(得分:0)
你可以使用transition.to
,但你必须决定移动多少。我假设你想把它一直移到另一边:
function box:touch( event )
if event.phase == "began" then
self.markX = self.x
elseif event.phase == "end" then
local targetX = 0 -- if flick left
if event.x > self.markX then -- flick right
targetX = display.contentWidth - self.width
end
local duration = 1000 -- 1 second
transition.to(self, {duration, x=targetX})
end
return true
end
没有经过测试,可能是语法或其他错误,但这应该会让您对如何继续(如果没有发表评论)有所了解。