电晕几个 transition.to 失相

Corona several transition.to gets out of phase

我正在创建几个显示对象并使用 transition.to 水平移动它们。一切正常,除了对象 x 位置超出 phase/position。对象应该永远具有相同的 X 位置,但它运行的时间越长,它们越偏离位置。

local function onLoopXListener( )
    transition.to( platform, { time=2000, x=0, transition=easing.inOutSine, delay=0} );
    transition.to( platform, { time=2000, x=320, transition=easing.inOutSine, delay=2000, onComplete=onLoopXListener} );
end

local function StartTransition( )
    transition.to( platform, { time=2000, x=0, transition=easing.inOutSine, delay=1000 } ); 
    transition.to( platform, { time=2000, x=320, transition=easing.inOutSine,  delay=3000, onComplete=onLoopXListener} );
end

for i = 1, 4, 1 do
    --create a new platform displayobject
    --seperate it vertically
    StartTransition( )
end

请原谅我的代码是否丑陋(我已经删除了不相关的代码 - 除了位置之外,它都有效) - 这是我在这里问的过渡概念。

我用过"enterFrame",效果很好。这是我的实现:

local _lastTime = 0
local function OnEnterFrame( event )
    deltaTime = event.time - _lastTime
    _lastTime = event.time
    MoveMyPlatformOnEnterFrame(deltaTime)
end

Runtime:addEventListener( "enterFrame", OnEnterFrame )

这就是我实现 sin() 转换的方式: 请记住,这需要在函数调用之上。

local _loopTime  = someValue
local _xRadians =0
local _amplitude = someOtherValue
local _platform --this is the Display Object I want to move
function MoveMyPlatformOnEnterFrame( deltaTime )
    delta = deltaTime / _loopTime * (44/7)
    _xRadians = _xRadians + delta
    _xRadians = math.fmod( _xRadians, (44/7) )
    _platform.x = _position.x + math.sin( _xRadians ) * _amplitude
end