我无法让我的动画正常工作,使用transition.to。

我对 Corona 还比较新,不确定我是否理解 transition.to,所以请尽量具体说明。我有一个对象在屏幕上“漂浮”(重力设置为 (0,-4))。因此,它是一个“动态”物理体,它与所有其他物理体正确交互。碰撞侦听器运作完美。然而,当气球达到 Y 坐标为 150 时,我希望对象在 250 毫秒内过渡到屏幕下方的较低位置。但当运行我的代码时,气球会飘到屏幕上的随机点,不一致。

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 调用一次,需要比此时间更长的过渡效果将基本上反复调用该函数,从而不允许过渡效果完成。如果这是问题的原因,那么有没有更好的方法来解决这个问题?

原文链接 https://stackoverflow.com/questions/9060113

点赞
stackoverflow用户909233
stackoverflow用户909233

如果你想要防止重复调用,请在 balloon 上放一个标志 isInTransition (这是随意的),并检查其状态以防每次调用。

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

这里 的讨论与你的情况相似。

2012-01-30 08:57:19