【问题标题】:pass an array objects in Corona with class用类在 Corona 中传递一个数组对象
【发布时间】:2013-04-27 15:02:24
【问题描述】:

我正在创建一个在 Class 中构造 Corona 的应用程序,当我想传递一个数组对象来创建一个对象时遇到了问题。 我有这个:

ma​​in.lua

local SurpriseBoxClass = require("SurpriseBox")
local BoxClass = require("Box")

local box1 = BoxClass.new('palo', 'images/chestClose.gif', 'OPEN')
local box2 = BoxClass.new('moneda', 'images/chestClose.gif', 'OPEN')
boxes = { box1, box2 }

local game = SurpriseBoxClass.new(boxes)

SurpriseBox.lua

local SurpriseBox = {}
local SurpriseBox_mt = { __index = SurpriseBox }

function SurpriseBox.new(boxesAux)
 local object = {
   boxes = boxesAux
 }
 return setmetatable( object, SurpriseBox_mt )
end

问题是当我想在 SurpriseBox 的方法中打印数组的内容时,程序告诉我如果我这样做,则数组为 nil:

print(boxes[0])

我能做什么?

谢谢!

【问题讨论】:

    标签: android class lua coronasdk


    【解决方案1】:

    Lua 表是从 1 开始的。

    试试print(boxes[1], boxes[2])

    它将打印表格ID。如果您需要打印表格的内容,您必须遍历其字段,或use a custom printer that does it for you(请参阅“递归打印表格”)。

    【讨论】:

    • 非常感谢!我从这种语言开始... =)
    【解决方案2】:

    查看函数SupriseBox.new(boxesAux)(我收集到您希望进行打印的地方):

    object 中,您将键"boxes" 与表boxesAux 相关联。要通过object 访问boxesAux 的内容,您必须经过以下过程:

    object["boxes"]object.boxes 将带你到boxesAux,进入你需要上标的地方,即[1]

    print(object["boxes"][1]) --etc..
    print(object.boxes[1]) --etc..
    

    请注意,现在这将为您提供box1。如果您想打印出有意义的内容显示(也就是说,如果类没有重载),您应该使用漂亮的打印库。

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多