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

为什么我无法将物理对象传递到另一个模块中?

main.lua

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

-- 在这里物理对象不是 nil
local a = Actor.new(200, 200, physics)

actor.lua

function Actor:new(x, y, physics)
   -- 在这里物理对象是 nil
end
点赞
用户869951
用户869951

在 Lua 中,当你在一个表里定义函数时,你必须小心使用 . 还是 :。 在 actor.lua 中,你定义了 Actor:new(x, y, phys),这意味着在 Actor:new 的主体中有一个隐式的 self 参数; 这个 self 将引用包含 Actor 表,并且是调用 Actor:new 的第一个参数。 在main.lua中,你调用了 Actor.new(200, 200, physics):注意点号而不是冒号,因此第一个参数是200,self 将是200, x 将是200, y 将是 physphys 将是空。 你应该更改对 new 的调用或定义 new,二者之一。例如,在 main.lua 中:

local a = Actor:new(200200,physics)

还要注意的是,如果你的 actor.lua 没有返回值,那么在 main.lualocal actor 将是 nil。 看起来你可能将 Actor 表定义为全局的,所以你能够在 main.lua 中引用它。

2014-02-16 17:44:01