【问题标题】:Issues with eventListeners in Corona SDK, luaCorona SDK、lua 中的 eventListener 问题
【发布时间】:2013-05-10 00:40:30
【问题描述】:

我在我的程序中创建事件时遇到问题。当我尝试使用以下系统设置运行它时,我收到错误“尝试调用方法'addEventListener(一个零值)”我正在寻找的效果是OtherObject文件向Object文件发送一个信号,事件,告诉特定例如,它已经完成了 OtherObject 文件中的一些任务。任何能让我走上正确道路的帮助或指导都将不胜感激。

目标文件

Object = {};

ObjectMeta = {__index = Object};

function Object:onTrigger()
   --Event Triggered
end

function Object.new(args)
    Obj = {};
    Obj.sprite = display.newImage("Picture.png");
    Object.someObject = OtherObject.new(args);
    Object.someObject.owner = Object;
    Object:addEventListener("onTriggered", Obj);
    return setmetatable(Obj,ObjectMeta );
end





return Object;

其他对象文件

OtherObject = {};

OtherObjectMeta = {__index = OtherObject};

function OtherObject.new(args)
    Obj = {};
    Obj.sprite = display.newRect(0,0,3,7);
    Obj.ObjectImAttachedTo =nil;
    return setmetatable(Obj,OtherObjectMeta );
end
function OtherObject:doSomething()
    self.ObjectImAttachedTo:dispatchEvent( {name = "triggered"} );
end
return OtherObject;

【问题讨论】:

  • :addEventListener() 仅适用于Runtime 和使用display.newImage() 创建的对象。
  • 我刚刚更新了我的代码,将 display.newImage() 调用包含在两个对象中,但我仍然遇到与以前相同的问题
  • 和以前一样,您将addEventListener 应用到没有addEventListener 方法的类。
  • 那么我将如何制作 addEventListener 和 dispatchEvent 功能?

标签: lua coronasdk


【解决方案1】:
local Object = {}

local ObjectMeta = {__index = Object}

function Object:triggered(event)
   --Event Triggered
end

function Object.new(args)
    local Obj = {}
    Obj.someObject = OtherObject.new(args)
    Obj.someObject.ObjectImAttachedTo = Obj
    setmetatable(Obj, ObjectMeta)
    Runtime:addEventListener("triggered", Obj)
    return Obj
end

return Object

【讨论】:

  • 那么我将如何从 OtherObject 调度它?如果我添加您的建议,我不会收到错误。但是它根本没有达到事件功能。
  • 显示您的代码。顺便说一句,OtherObject 模块中有一个错字 - return setmetatable(Obj,ObjectMeta);中的元表错误
  • 我发现了我的问题,它现在可以正常工作,我更新了代码。感谢您的所有帮助
猜你喜欢
  • 2014-01-28
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 2012-05-08
  • 2013-06-06
相关资源
最近更新 更多