如何为我在Lua中为另一个类分配值的对象添加事件侦听器?

时间:2012-06-22 07:16:22

标签: class lua corona addeventlistener

我正在尝试为我赋予另一个类'函数值的值的对象编写触摸事件。但是,它给了我这个错误:尝试调用'addEventListener'nil value。

这是我的fish.lua代码:

function class()
 local cls = {}
 cls.__index = cls
 return setmetatable(cls, {__call = function (c, ...)
    instance = setmetatable({}, cls)
    if cls.__init then
        cls.__init(instance, ...)
    end
    return instance
  end})
end


Color= class()

function Color:__init(image)
  self.image=display.newImage(image,30,30)
end

originalImage="fish.small.red.png"
differentImage="fish.small.blue.png"

这是我的main.lua代码:

require  "fish"

local fishImage=Color(originalImage)

function listen(event)
if(phase.event=="began") then
    fishImage=Color(differentImage)
  end
 end

fishImage: addEventListener("touch", listen)

2 个答案:

答案 0 :(得分:0)

fishImage是您创建的类的一个实例(Color),它没有名为addEventListener的方法,至少在您显示的代码中没有。也许你的意思是:

fishImage.image:addEventListener('touch', listen)

将Color事件监听器添加到Color类封装的电晕图像对象中。

答案 1 :(得分:0)

你有很多错误。但是以此为例: fish.lua

local fish = {}

fish.color = function(image)
    local image = display.newImage(image,30,30)
    return image
end

return fish

main.lua

display.setStatusBar(display.HiddenStatusBar)

local fish = require("fish")
local fishImage = fish.color("Icon.png")

local function listen(event)
    if(event.phase=="began") then
        fishImage=fish.color("Icon-60.png")
    end
end

fishImage:addEventListener("touch", listen)