Function Corona:尝试索引全局';自我';(零值)

Function Corona:尝试索引全局';自我';(零值),function,lua,coronasdk,Function,Lua,Coronasdk,我有一个创建太空飞船的类,我希望它包含一个函数,如果飞船撞到特定的墙,它会自动移除。 但是,运行下面的代码时,会出现以下错误: ...xenosShip.lua:16: attempt to index global 'self' (a nil value) stack traceback: [C]:? ...xenosShip.lua:16: in function ...xenosShip.lua:14> ?:in function <?:218 您可以这样做,self不是显示

我有一个创建太空飞船的类,我希望它包含一个函数,如果飞船撞到特定的墙,它会自动移除。 但是,运行下面的代码时,会出现以下错误:

...xenosShip.lua:16:
attempt to index global 'self' (a nil value)
stack traceback:
[C]:?
...xenosShip.lua:16: in function ...xenosShip.lua:14> ?:in function <?:218

您可以这样做,
self
不是显示对象,或者它没有对显示对象的引用,因此
object:removeSelf()中有一个错误。

如果你想使用self,你可以这样做。因此,自我现在指的是
新异族飞船

function xenosShip.new()

    local newXenosShip=display.newSprite( alShipSheet, alShipSeqData )
    newXenosShip:play()
    newXenosShip.x=300
    newXenosShip.y=70
    newXenosShip.myName = "newXenosShip"
    physics.addBody(newXenosShip,"dynamic", {density = 1.0, friction = 0.3, bounce = 1})
    newXenosShip:applyForce(50,2500,newXenosShip.x,newXenosShip.y)
    newXenosShip.collision = function(self,event)
        if (event.phase == "began" and event.other.myName == "bottomWall") then
                self:removeSelf()
        end
    end

    newXenosShip:addEventListener("collision")
end

我最近遇到了相同的错误消息;对我来说,这是一个简单的语法错误,而不是

 playerInstance:resetTargetPosition()
我用过

 playerInstance.resetTargetPosition()

(注意
而不是

太棒了,谢谢!我可以问一下,为什么在这种情况下,新的异族飞船似乎是事件的目标而不是自我?我在前面的代码中使用了相同的构造,但不是在类中,并且在那里工作得很好。这取决于您如何将display对象引用到类。很抱歉,我不能很好地解释,我在科罗纳和卢阿还是新手。
 playerInstance:resetTargetPosition()
 playerInstance.resetTargetPosition()