如何在Corona Sdk中的模块之间传递物理对象

时间:2014-02-16 16:02:43

标签: lua corona

main.lua

local physics = require("physics")
local actor = require("actor")
physics.start()

//here physic is not nil
local a = Actor.new(200, 200, physics)

actor.lua

function Actor:new(x, y, physic)
   //here physic is nil
end

为什么我不能将物理对象传递到另一个模块?

1 个答案:

答案 0 :(得分:1)

在Lua中,在表中定义函数时必须小心:使用.还是:。在actor.lua中,您定义了Actor:new(x,y,phys),这意味着self正文中有一个隐含的Actor:new参数;此self将引用包含Actor表,并且是Actor:new调用中的第一个参数。在main.lua中,您拨打Actor.new(200, 200, physics):请注意点而不是冒号,因此第一个参数为200,表示self为200,x为200,{{ 1}}将为y,而physics将为零。您应该将呼叫更改为physnew的定义,其中一个或另一个。例如,在new

main.lua

另请注意,如果您的local a = Actor:new(200, 200, physics) 未返回任何内容,则actor.lua中的local actor将为main.lua。看起来您可能将nil表定义为全局,因此您可以在Actor中引用它。