在遇到一些问题后,我现在正在使用 LUA 中间类库,但我似乎无法弄清楚情况。
说我有我的课:编辑:有一个错字:这是实际的功能
require "middleclass"
weaponCanon2 = class("weaponCanon2")
function weaponCanon2:onWeaponCollision(event)
if (event.phase == "began") then
if (event.other.name ~= "ground") then
self.canonBall.inAir = false
end
end
end
function weaponCanon2:initialize(atX, atY, inGroup)
self.name = "some value"
self.someObject:addEventListener("touch", **weaponCanon2.onWeaponCollision**)
...
end
Run Code Online (Sandbox Code Playgroud)
当我这样做时,上面示例中的每个变量(例如 self.name)现在都为零。我相信这是因为我的功能是:
function weaponCanon2:onWeaponCollision(event)
...
end
Run Code Online (Sandbox Code Playgroud)
然后设置像 self.collisionEvent = WeaponCanon2.onWeaponCollision 这样的碰撞事件变量不是一回事。我不是 100% 确定 : 和 . 运营商是在 LUA 方面,但这些给了我不同的问题。
现在另一个例子是我有一个重置功能。计时器关闭,然后调用重置功能。如果我这样做:
timer.performWithDelay(100, weaponCanon2.resetShot, 1)
Run Code Online (Sandbox Code Playgroud)
然后在 100 毫秒内它会调用 WeaponCAnon2.resetShot 1 次。当它这样做时,我所有的 self.name 等变量都为零。现在,如果我创建我的班级:
require("weaponCanon2")
local canon = weaponCanon2:new("someName")
canon:saveInstance(canon)
Run Code Online (Sandbox Code Playgroud)
然后回到我的类文件中:
function saveInstance(value)
self.instance …Run Code Online (Sandbox Code Playgroud)