Corona SDK 奇怪的过渡行为

我希望我没有错过什么非常明显的东西。 我正试图理解以下行为。


fileOne.lua

返回函数()
local self =显示.newGroup()

local text =显示.newText({
    文本 =“TEXT ONE”,
    x = 100,
    y = 100,
    字体大小= 20
}

我: 插入文本()

我: 动画()
    本地函数比例(阶段)
        如果阶段==“向下”然后
            self.AnimationTransition =过渡.scaleTo(self,{xScale = 0.95,yScale = 0.95time = 500,onComplete = function()scale(“up”)end})
        elseif phase ==“upthen
            self.AnimationTransition =过渡.scaleToself,{xScale = 1.05,yScale = 1.05,time = 500,onComplete = function()scale(“down”)end})
        结束
    结束
    比例(“down”)
结束

我:开始()
    我:动画()
结束

我:停止()
    过渡取消(自我。AnimationTransition)
结束

返回自;
结束

fileTwo.lua

返回函数()
local self =显示.newGroup()

local text =显示.newText({
    文本 =“TEXT TWO”,
    x = 100,
    y = 100,
    字体大小= 20
}

我: 插入文本()

我: 动画()
    本地函数比例(阶段)
        如果阶段==“向下”然后
            self.AnimationTransition =过渡.scaleTo(self,{xScale = 0.95,yScale = 0.95time = 500,onComplete = function()scale(“up”)end})
        elseif phase ==“upthen
            self.AnimationTransition =过渡.scaleToself,{xScale = 1.05,yScale = 1.05,time = 500,onComplete = function()scale(“down”)end})
        结束
    结束
    比例(“down”)
结束

我:开始()
    我:动画()
结束

我:停止()
    过渡取消(自我。AnimationTransition)
结束

返回自;
结束

main.lua

local文件一=require“fileOne”()
local文件二=require“fileTwo”()

fileOne:start()
fileTwo:stop()

当我编译这个时,动画不起作用。 第二个文件的停止函数停止了第一个文件的动画。 我是否有一些命名空间问题? 还是其他引用问题? 还是语法问题?

点赞
用户1172363
用户1172363

当你调用

fileTwo: stop();

你实际上是调用了transition.cancel(null),似乎用 null 调用这个函数会导致奇怪的行为。

如果你在 fileTwo 上添加下面的代码:

if (self.AnimationTransition ~ = nil) then 
transition.cancel( self.AnimationTransition) 
end 

问题便解决了。

2014-05-15 22:23:42