【问题标题】:transition.to( ) doesn't work within a function and with a Runtime:addEventListener( "enterFrame", method) listener in Corona / Luatransition.to( ) 在 Corona / Lua 中的函数和 Runtime:addEventListener("enterFrame", method) 侦听器中不起作用
【发布时间】:2011-11-26 01:42:33
【问题描述】:

所以这是我的问题。我正在使用 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)

它突然起作用了。

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

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    每次刷新屏幕时,Corona 运行时都会调用enterFrame 侦听器——可能是每秒 30 帧。因此,每 33 毫秒,您就会在广场上启动一个动画,这需要 1500 毫秒才能完成。就在它开始时,您添加了另一个动画。等等。您应该使用此事件来处理必须直接管理的动画,因为移动或更改超出了转换函数的能力。使用过渡函数的全部意义在于避免对大多数动画进行这种直接控制。

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

    【讨论】:

    • 基本上,我需要一个图像在循环路径中移动(比如说 0,0 0,1 1,1 1,0),直到我点击它,在这种情况下会调用另一个函数。你会说我可以使用 onComplete 参数以及路径中四个点中的每一个点的不同函数来做到这一点吗?
    • 是的,我就是这样处理它的。跟踪局部变量中的当前转换,以便您可以在触摸事件处理程序中终止它。 (transition.to() 返回一个句柄,稍后在 transaction.cancel() 中使用。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    相关资源
    最近更新 更多