oop - 我如何在 lua love2d (OOP) 中使用类

标签 oop lua love2d

我不知道如何在lua中创建类,所以我使用了论坛上推荐的代码。 但始终只有一个对象起作用。第一个对象有坐标 x,y,另一个对象共享他的坐标。你能解释一下我在这段代码中做错了什么吗? 谢谢您的建议。

我的代码:

require("class") 

asteroid = class:new()

function asteroid:init(x,y)
        asteroid.b = love.physics.newBody(world, x ,y , "dynamic")
        asteroid.s = love.physics.newCircleShape(35)
        asteroid.f = love.physics.newFixture(asteroid.b, asteroid.s)  
end

function love.load() 
world = love.physics.newWorld(0, 50, true)  

asteroid1= asteroid:new(100,100)
asteroid2= asteroid:new(700,100)
end


function love.update(dt)
 world:update(dt)
end

function love.draw()
love.graphics.circle("line", asteroid1.b:getX(),asteroid1.b:getY(), asteroid1.s:getRadius(), 35)
love.graphics.circle("line", asteroid2.b:getX(),asteroid2.b:getY(), asteroid2.s:getRadius(), 35)
end

推荐代码:

__HAS_SECS_COMPATIBLE_CLASSES__ = true

local class_mt = {}

function class_mt:__index(key)
    return self.__baseclass[key]
end

class = setmetatable({ __baseclass = {} }, class_mt)

function class:new(...)
    local c = {}
    c.__baseclass = self
    setmetatable(c, getmetatable(self))
    if c.init then
        c:init(...)
    end
    return c
end

最佳答案

这是给您的演示代码

local MyClass = {}
MyClass.__index = MyClass

setmetatable(MyClass, {
  __call = function (cls, ...)
    return cls.new(...)
  end,
})

function MyClass.new(init)
  local self = setmetatable({}, MyClass)
  self.value = init
  return self
end

-- the : syntax here causes a "self" arg to be implicitly added before any other args
function MyClass:set_value(newval)
  self.value = newval
end

function MyClass:get_value()
  return self.value
end

local instance = MyClass(5)
-- do stuff with instance...

我建议您遵循这些教程

http://lua-users.org/wiki/ObjectOrientationTutorial

http://lua-users.org/wiki/TutorialDirectory

关于oop - 我如何在 lua love2d (OOP) 中使用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20564707/

相关文章:

lua - 从一个字符串中获取两个字符串

javascript - 在同一个类中调用 EventEmitter 两次?

asp.net - 如何在我的代码中使用接口(interface)使其更具可扩展性?

indexing - 我可以强制 Lua 的表索引从零开始吗?

lua - 如何在 Centos 中安装 luarocks?

linker - Lua编译链接错误

vim - 在 Vim 中打开 Lua .love 文件

类和模块以及 Lua,哦,我的

java - 类(class)成员的计算

language-agnostic - 对象规范化