transition.to()在函数内不起作用并且在Corona / Lua中使用运行时:addEventListener(“enterFrame”,method)监听器

时间:2011-11-25 11:50:27

标签: lua corona

所以这是我的问题。我正在使用Corona SDK处理一些Lua代码,用于iPhone应用程序。我已经将问题缩小到几行代码,如果能够工作,可以指出我在实际代码的正确方向。 (另外,发布原始代码只会使这篇文章更长:P)。所以这里:

local square = display.newRect( 0, 0, 100, 100 )
square:setFillColor( 255,255,255 )

local function move(event)
    transition.to( self, { time=1500, alpha=0, x=100, y=100 } )
end

Runtime:addEventListener("enterFrame", move)

基本上,问题是transition.to()方法在具有“enterFrame”侦听器的函数中不起作用。如果我将最后一行的监听器更改为

timer.performWithDelay( )

甚至

Runtime:addEventListener( "touch", method)
它突然起作用了。

我不知道我错过了什么。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

每次刷新屏幕时,Corona运行时都会调用enterFrame侦听器 - 大概每秒30帧。所以每33毫秒,你在广场上开始动画,完成需要1500毫秒。就像它开始一样,你添加另一个动画。等等。您应该使用此事件来处理您必须直接管理的动画,因为移动或更改超出了转换功能的功能。使用转换函数的重点是避免对大多数动画进行这种直接控制。

仅当用户触摸屏幕时才会调用touch侦听器,因此您不会重复调用move事件。 performWithDelay方法也只调用一次move事件。您可能想要使用其中一种方法。