Chiederei il tuo aiuto per un errore che mi sta facendo impazzire.Errore LUA e Corona: tentativo di chiamare il metodo '' (A Nil Value) - Driving Me Crazy
Ohh ... sto usando LUA con Corona SDK btw ...
sto creando un'istanza di una nave. La nave viene istanziata, posso accedere alle sue proprietà, ma non posso accedere a nessun metodo !! Seguire i codici, non so cosa fare:
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
e parte del 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...
L'errore nel terminale è:
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
Sì! Hai ragione! Stavo definendo il mio metatable con un display ... Per correggere, ho creato uno spazio displayShip.body = ... Ora ha funzionato !! Grazie! –
Potresti aiutare con questo? http://stackoverflow.com/questions/15716914/object-assignment-lua – user2136963