通过轻弹的方式移动物体。

我可以通过触摸并沿着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 )
点赞
用户869951
用户869951

你可以使用transition.to,但是你需要决定移动多少。我假设你想完全移动到另一侧:

function box:touch( event )
    if event.phase == "began" then
        self.markX = self.x

    elseif event.phase == "end" then
        local targetX = 0 -- 如果向左滑动
        if event.x > self.markX then -- 如果向右滑动
            targetX = display.contentWidth - self.width
        end
        local duration = 1000 -- 1秒钟
        transition.to(self, {duration, x=targetX})
    end

    return true
end

未经测试,可能存在语法或其他错误,但这应该可以让你了解如何继续(如果需要,可以添加注释)。

2014-04-19 01:39:18