我对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被调用一次,所以转换时间超过这个时间基本上会重复调用该函数,从不允许转换完成。如果这是问题,那么有更好的方法吗?
答案 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。