我无法通过transition.to使我的动画正常工作

时间:2012-01-30 06:21:31

标签: lua corona

我对Corona相对较新,我仍然不确定我是否理解transition.to,所以请耐心等待我。我在屏幕上有一个“浮动”(重力设置为(0,-4))的对象。所以它是一个“动态”的物理体,它与所有其他物理体正确地相互作用。碰撞听众工作得很好。但是,当对象气球达到150的Y时,我希望对象在250ms内过渡到屏幕上的较低位置。但是当我运行我的代码时,气球会转到屏幕上的随机点并且不一致。

    local function move(event)

       If (balloon.y <= 150) then
          transition.to(balloon, {time = 250, x = balloon.x, y = 320);
       end
    end


    Runtime:addEventListener("enterFrame", move);

我已经读过,因为enterFrame监听器每隔30-60ms被调用一次,所以转换时间超过这个时间基本上会重复调用该函数,从不允许转换完成。如果这是问题,那么有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您想阻止重复通话,请将标记isInTransition(这是任意的)放到balloon上,并检查每次通话的状态。

local function move(event)

    if not balloon.isInTransition then
        if (balloon.y <= 150) then
            transition.to(balloon, {time = 250, x = balloon.x, y = 320)
            balloon.isInTransition=true
        elseif balloon.y == 320 then
            balloon.isInTransition=nil
        end
    end
end

Runtime:addEventListener("enterFrame", move);

如果物理相互作用(例如碰撞)与transition.to()混合,物理学对过渡效果不佳。

如果您希望气球移动到较低位置而不会发生碰撞,可以尝试balloon.isSensor=true/false

关于与您类似的案例的讨论here