我会请求你的帮助,因为一个让我疯狂的错误.
哦……我正在使用LUA和Corona SDK btw ……
我正在创建一个船的实例.该船正在实例化,我可以访问其属性,但我无法访问任何方法!按照代码,我不知道该怎么做:
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,height) _spaceShip:setFillColor(140,140,0) _spaceShip.width = width _spaceShip.height = height local shipShape = { -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,height/2 } local shipMotorMaterial = { density = 1.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...
终端中的错误是:
2013-03-21 19:18:15.736 Corona Simulator[48347:707] Runtime error: 2013-03-21 19:18:15.737 Corona Simulator[48347:707] ...t/iOS/Deep Space Harvest/Deep Space Harvest/main.lua:28: attempt to call method 'log' (a nil value) stack traceback: [C]: in function 'log' ...t/iOS/Deep Space Harvest/Deep Space Harvest/main.lua:28: in main chunk