首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gideros:自定义事件未到达事件侦听器

Gideros:自定义事件未到达事件侦听器
EN

Stack Overflow用户
提问于 2015-08-14 02:39:45
回答 1查看 104关注 0票数 1

在Gideros中,我使用了一个自定义事件来更新比分。对于事件的接收者,我有以下代码(为简洁起见,省略了一些行):

代码语言:javascript
复制
GameInfoPanel = Core.class(Sprite)

function GameInfoPanel:init()
    self:addEventListener("add_score", self.onAddScore, self) -- Registering event listener here
    self.score = 0
end

function GameInfoPanel:onAddScore(event)
  self.score = self.score + event.score -- << This line is never reached
end

这是触发事件的代码:

代码语言:javascript
复制
      local score_event = Event.new("add_score")
      score_event.score = 100
      self:dispatchEvent(score_event) 

但是,上面注册为侦听器的函数永远不会被访问。

EN

回答 1

Stack Overflow用户

发布于 2015-08-14 13:40:49

好的,我在Gideros Mobile论坛上找到了答案:http://giderosmobile.com/forum/discussion/4393/stuck-with-simple-custom-event/p1

在这里,用户ar2rsawseen指出发送者和接收者必须通过一些公共对象进行通信(不确定如何或为什么通信,但它可以工作),所以下面的代码实际上对我有效:

代码语言:javascript
复制
GameInfoPanel = Core.class(Sprite)

function GameInfoPanel:init()
    stage:addEventListener("add_score", self.onAddScore, self) -- 'stage' is common and accessible to both
    self.score = 0
end

function GameInfoPanel:onAddScore(event)
  self.score = self.score + event.score
end

和事件的发送者:

代码语言:javascript
复制
  local score_event = Event.new("add_score")
  score_event.score = 100
  stage:dispatchEvent(score_event) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31996012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档