transition.to()在Corona/Lua中的函数内和带有Runtime:addEventListener("enterFrame", method)监听器的函数中无法正常工作。

以下是我的问题。我正在使用Corona SDK为iPhone应用程序编写一些Lua代码。我已经将问题缩小到几行代码,如果让它们正常工作,可以为实际的代码指明方向。 (此外,发布原始代码只会使此帖子更长: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)

它突然就工作了。

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

原文链接 https://stackoverflow.com/questions/8268710

点赞
stackoverflow用户5420
stackoverflow用户5420

enterFrame监听器由Corona运行时每次屏幕刷新时调用--可能是每秒30帧。所以每33毫秒,您就会启动在正方形上的动画,需要1500毫秒才能完成。就在它开始时,您添加了另一个动画。以此类推。您应该使用此事件来处理必须直接管理的动画,因为移动或更改超出了转换功能的能力范围。使用过渡函数的整个重点是避免大多数动画需要此类直接控制。

touch监听器仅在用户触摸屏幕时调用,因此您不会得到move事件的重复调用。performWithDelay方法也仅调用一次move事件。您可能希望使用其中一种方法。

2011-11-25 17:23:56