【问题标题】:rotating a physics object in lua在lua中旋转物理对象
【发布时间】:2014-01-02 16:03:55
【问题描述】:

我遇到的问题是旋转一个对象并移动到 lua 中的下一个场景。 我有一个返回增量时间的函数,如下所示:

local runtime = 0
local function getDeltaTime()
   local temp = system.getTimer()  
   local dt = (temp-runtime) / (1000/200)
   runtime = temp
   return dt
end

然后在我的createScene 中,我有frameUpdate() 函数如下:

local function frameUpdate()


     local dt = getDeltaTime()

    wood5.rotation = wood5.rotation -(1*dt)
    wood6.rotation = wood6.rotation -(1*dt)

end
Runtime:addEventListener( "enterFrame", frameUpdate )

wood5 和 wood6 在上面分别用旋转值 900 初始化。

这里的问题是当我使用“下一个场景”按钮切换场景时。两个树林可以很好地旋转,但是当我点击“下一步”、“返回”或“重置”按钮时,它会显示一个错误并显示“attempt to perform arithmetic on field 'rotation' (a nil value)”我尝试打印wood5.rotation 的值和wood5.rotation,第一次是900,后来变成了巨大的负数。类似的东西:

-3430.9887695313
-3520.9877929688

。 .etc

【问题讨论】:

  • 显示初始化木材旋转场的代码;这段代码没有被执行。或者,您的代码中某处有一个wood5.rotation = something(其中something 不是指wood5.rotation),而某事为零。我对Corona不熟悉,“下一个”是否与“下一个场景”相同,“后退”是前一个场景,“重置”是第一个场景?每次切换场景时都会执行一些代码吗?如果是这样,也显示该代码,这是关键。

标签: android ios lua rotation coronasdk


【解决方案1】:

场景切换前,调用:

Runtime:removeEventListener( "enterFrame", frameUpdate )

在你的函数中,检查对象是否存在:

if(wood5~=nil)then
wood5.rotation = wood5.rotation -(1*dt)
end

继续编码........ :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2018-10-26
    • 1970-01-01
    相关资源
    最近更新 更多