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

我试图为我分配了另一个类的函数值的对象编写一个触摸事件。但是,它给了我这个错误:尝试调用'addEventListener'空值。

这是我的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)
点赞
用户501459
用户501459

fishImage是您创建的一个类(Color)的实例,该类在您展示的代码中没有名为addEventListener的方法。也许您想到了:

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

这将向您的Color类封装的卡罗纳图像对象添加事件侦听器。

2012-06-22 07:39:35
用户1925928
用户1925928

你有很多 bug。但这里提供一个例子: 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)
2014-01-23 14:42:20