lua transition.to onComplete функция не работает - PullRequest
0 голосов
/ 10 мая 2018
local link = require("link")
local walkingData = require("Animation")

local walk_right
local walk_down
local walk_left
local walk_up

--loading in the sprite sheet and animation data
local options = link.getSpriteSheetData()
local walking = walkingData.getAnimationSequences()

-- creating the image sheet and sprite
local sheet1 = graphics.newImageSheet("link.png", options)

local linkWalk = display.newSprite(sheet1, walking)

linkWalk.x = 40
linkWalk.y= display.contentHeight - 60

--start the loop by transition
--linkWalk:setSequence("Walking up")
--linkWalk:play()
--transition.to(linkWalk, {y= 60, time= 8000, onComplete = walk_right})

local function walk_right ()

    linkWalk:setSequence("Walking right")
    linkWalk:play()
    transition.to(linkWalk, {x=display.contentWidth - 60, time= 3200, 
onComplete=walk_down})

end

local function walk_left ()

    linkWalk:setSequence("Walking left")
    linkWalk:play()
    transition.to(linkWalk, {x= 60, time= 3200, onComplete = walk_up})
end

local function walk_up ()

    linkWalk:setSequence("Walking up")
    linkWalk:play()
    transition.to(linkWalk, {y= 60, time= 8000, onComplete = walk_right})

end

local function walk_down ()

    linkWalk:setSequence("Walking down")
    linkWalk:play()
    transition.to(linkWalk, {y=display.contentHeight - 60, time= 8000, 
onComplete = walk_left})

end

--starting by making the sprite move upward
walk_up()'

Я нахожусь в классе для короны, и у меня возникают проблемы с заданием. Я пытаюсь заставить изображение спрайта обойти границу устройства, но спрайт движется вверх и идет вправо, а затем останавливается. почему бы так, чтобы функция transition.to onComplete работала правильно в первой вызванной функции, но не вызванной функцией onComplete. я пробовал несколько способов его запуска, но дошел только до правильного пути, есть ли лучший способ перейти от перехода к переходу?

1 Ответ

0 голосов
/ 10 мая 2018

Попробуйте

local composer   = require 'composer' 

local scene = composer.newScene()
local sprite


function scene:create( event )

    local sceneGroup = self.view

    local _T = display.screenOriginY
    local _B = display.viewableContentHeight - display.screenOriginY
    local _L = display.screenOriginX
    local _R = display.viewableContentWidth - display.screenOriginX

    sprite = display.newImage( sceneGroup, 'bubble.png', 0, 0 )
    sprite.index = 1

    local data = { 
        { x=sprite.width * 0.5,      y=_B - sprite.height * 0.5, time=3200 },
        { x=sprite.width * 0.5,      y=_T + sprite.height * 0.5, time=8000 },
        { x=_R - sprite.width * 0.5, y=_T + sprite.height * 0.5, time=3200 },
        { x=_R - sprite.width * 0.5, y=_B - sprite.height * 0.5, time=8000 },
        { x=sprite.width * 0.5,      y=_B - sprite.height * 0.5, time=3200 }
    }

    function sprite.onComplete( self )

        if self.index < 5 then 

            local prevTrans = data[self.index]
            local nextTrans = data[self.index + 1]
            nextTrans.onComplete = self.onComplete
            self.index = self.index + 1
            self.x, self.y = prevTrans.x, prevTrans.y
            transition.to( self, nextTrans )

        end

    end 



end

function scene:show( event )

    local sceneGroup = self.view
    local phase     = event.phase

    if phase == 'will' then

    elseif phase == 'did' then

        sprite.onComplete( sprite )

    end
end

function scene:hide( event )

    local sceneGroup = self.view
    local phase     = event.phase

    if phase == 'will' then

    elseif phase == 'did' then

    end
end

function scene:destroy( event )

end

scene:addEventListener( 'create', scene )
scene:addEventListener( 'show', scene )
scene:addEventListener( 'hide', scene )
scene:addEventListener( 'destroy', scene )

return scene

Я использую пользовательский модуль для работы с изображениями и композиторами.

...