Корона несколько переходов. Выходит из фазы - PullRequest
0 голосов
/ 08 июня 2018

Я создаю несколько экранных объектов и использую transition.to для их горизонтального перемещения.Все работает, кроме объектов х позиции выходят из фазы / позиции.У объектов должны быть одинаковые позиции 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

Простите, если мой код некрасив (я удалил нерелевантный код - все работаеткроме позиций) - это концепция перехода, о которой я здесь спрашиваю.

1 Ответ

0 голосов
/ 04 июля 2018

Я использовал "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
...