Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LUA和Corona错误:尝试调用方法'';(零值)-让我发疯_Lua_Coronasdk - Fatal编程技术网

LUA和Corona错误:尝试调用方法'';(零值)-让我发疯

LUA和Corona错误:尝试调用方法'';(零值)-让我发疯,lua,coronasdk,Lua,Coronasdk,我想请你帮我一个让我发疯的错误 哦。。。我正在使用LUA和Corona SDK顺便说一句 我正在创建一个船的实例。船正在被实例化,我可以访问它的属性,但我不能访问任何方法!!按照代码操作,我不知道该怎么办: spaceShip.lua: require('gameConf') spaceShip = {} spaceShip.__index = spaceShip function spaceShip:New(posX, posY, width, height) local _spa

我想请你帮我一个让我发疯的错误

哦。。。我正在使用LUA和Corona SDK顺便说一句

我正在创建一个船的实例。船正在被实例化,我可以访问它的属性,但我不能访问任何方法!!按照代码操作,我不知道该怎么办:

spaceShip.lua:

require('gameConf')

spaceShip = {}
spaceShip.__index = spaceShip

function spaceShip:New(posX, posY, width, height)
    local _spaceShip = nil
    _spaceShip = {}
    setmetatable(_spaceShip, spaceShip)

    _spaceShip = display.newRect(posX - width/2, posY - height/2, width, height)
    _spaceShip:setFillColor(140, 140, 140, 0)
    _spaceShip.width = width
    _spaceShip.height = height

    local shipShape = { -width/2, -height/2, width/2, -height/2, width/2, height/2, -width/2, height/2 }
    local shipShapeMaterial = { density = 1.0, friction = 1.0, bounce = 0.0 , shape = shipShape}

    local shipMotor = { -width/2, height/3, width/2, height/3, width/2, height/2, -width/2, height/2 }
    local shipMotorMaterial = { density = 1.0, friction = 1.0, bounce = 0.0 , shape = shipMotor}

    physics.addBody( _spaceShip, shipShapeMaterial, shipMotorMaterial )

    return _spaceShip
end

function spaceShip:log()
    print("ship")
end

function spaceShip:applyFrontImpulse()
    local angle = math.rad(self.rotation)
    local xComp, yComp = math.cos(angle), -math.sin(angle)
    local forceMag = 2

    self:applyLinearImpulse(forceMag * xComp, forceMag * yComp, self.x, self.y)
end
和部分main.lua

require('camera')
require('gameConf')
require('meteor')
require('spaceShip')

-- Add Physics
local physics = require( "physics" )
physics.start()
physics.setDrawMode( "hybrid" )
physics.setGravity( 0, 0 )

-- Load camera
local camera = camera:New()

-- Containers
meteorManager = {}
shipManager = {}

-- Load Vector class
vector = require "vector"

-- Create one ship
local myShip = nil;
myShip = {}
myShip = spaceShip:New(600, 200, 30, 60)
table.insert(shipManager, myShip)
camera:insert(myShip)
myShip:log() <----- HERE IS THE ERROR

rest of the code...

我怀疑问题是由于以下片段:

_spaceShip = {}
setmetatable(_spaceShip, spaceShip)

_spaceShip = display.newRect(posX - width/2, posY - height/2, width, height)
您在
\u spaceShip
上设置了一个元表,但随后为其指定了一个新值。此时,您指定的新值没有您建立的元表关联,因为它位于值(非变量)上


\u spaceShip=display.newRect…之后移动
setmetatable

是!你是对的!我用显示过度定义了我的元表。。。为了更正,我创建了一个display spaceShip.body=。。。现在它成功了!!非常感谢。你能帮忙吗?
_spaceShip = {}
setmetatable(_spaceShip, spaceShip)

_spaceShip = display.newRect(posX - width/2, posY - height/2, width, height)