我正在使用metatables在Corona SDK中创建OOP游戏,但我的代码遇到了一些问题。
这是我的main.lua文件:
-----------------------------------------------------------------------------------------
--
-- main.lua
--
-----------------------------------------------------------------------------------------
-- Your code here
local hero = require("hero")
local environment = require("environment")
local obstacle = require("obstacle")
local player = hero.new("Billy", 0, 10)
这是我的hero.lua类文件:
local hero = {}
local hero_mt = {_index = hero}
--Constructor
function hero.new (name, positionX, positionY)
local newHero = {
name = name
positionX = positionX or 0
positionY = positionY or 0
}
return setmetatable( newHero, herp_mt )
function hero:Jump(amount)
end
我收到的错误如下:
从文件'hero.lua'加载模块'hero'时出错: hero.lua:14'}'预计(在第12行关闭'{')附近 '位X'
我遵循了此网站使用的相同语法(https://coronalabs.com/blog/2011/09/29/tutorial-modular-classes-in-corona/) 但仍然没有任何工作。有什么想法吗?
答案 0 :(得分:3)
声明newHero表时,您缺少逗号。所有表的属性必须用逗号分隔。有关详细信息,请参阅documentation。最后一个元素也可以有逗号。
local newHero = {
name = name,
positionX = positionX or 0,
positionY = positionY or 0,
}
你错过了一个结束end
以及函数hero.new()
并且需要在你的英雄文件的末尾返回英雄表,如下所示:return hero
这样你就可以实际上在主文件中调用hero.new()
。