lua transition.to onComplete function不起作用

local link = require("link")
local walkingData = require("Animation")

local walk_right
local walk_down
local walk_left
local walk_up

-- 加载精灵图片和动画数据
local options = link.getSpriteSheetData()
local walking = walkingData.getAnimationSequences()

-- 创建图像和精灵
local sheet1 = graphics.newImageSheet("link.png", options)

local linkWalk = display.newSprite(sheet1, walking)

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

-- 通过转换开始循环
-- 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

-- 从向上移动开启
walk_up()'

我正在上 corona 课程,我遇到了一个问题。我正在尝试让一个精灵图像在设备的四周行走,但是精灵向上移动后向右移动就停止了。为什么在第一个调用的函数中,transition.to onComplete 函数可以正常工作,而在由 onComplete 函数调用的函数中却不能正常工作?我尝试了多种方法来开始它,但只能走到右边,有没有更好的方法来实现从转换到转换?

点赞
用户7026995
用户7026995

尝试

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

我使用了自定义的图像和composer模块。

2018-05-10 12:49:51