Tôi sẽ yêu cầu trợ giúp của bạn về một lỗi khiến tôi phát điên.Lỗi LUA và Corona: Cố gắng gọi phương thức '' (Giá trị Nil) - Lái xe cho tôi Crazy
Ohh ... Tôi đang sử dụng LUA với Corona SDK btw ...
Tôi đang tạo bản sao tàu. Con tàu đang được khởi tạo, tôi có thể truy cập các thuộc tính của nó, nhưng tôi không thể truy cập bất kỳ phương pháp nào !! Thực hiện theo các mã số, tôi không biết phải làm gì:
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
và một phần của 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...
Các lỗi trong thiết bị đầu cuối là:
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
Có! Bạn đúng rồi! Tôi đã qua xác định metatable của tôi với một màn hình ... Để sửa, tôi tạo ra một không gian hiển thịShip.body = ... Bây giờ nó đã làm việc !! Cảm ơn bạn! –
Bạn có thể giúp điều này không? http://stackoverflow.com/questions/15716914/object-assignment-lua – user2136963