通过轻弹移动对象

时间:2014-04-18 18:49:25

标签: lua corona

我可以通过触摸它并沿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 ) 

1 个答案:

答案 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

没有经过测试,可能是语法或其他错误,但这应该会让您对如何继续(如果没有发表评论)有所了解。