--自定义事件

  1. --自定义事件
  2. --加载EventProctocol组件
  3. --在MainScene:ctor()中 加入如下代码,就可以让MainScene拥有EventProtocol的方法
  4. cc(self):addComponent("component.behavior.EventProtocol"):exportMethods()
  5. --exportMethods()
  6. function EventProtocol:exportMethods()
  7. self:exportmethods_({
  8. "addEventListener",
  9. "dispatchEvent",
  10. "removeEventListenr",
  11. "removeEventListenersByTag",
  12. "removeEventListenersByEvent",
  13. "removeAllEventListenersForEvent",
  14. "removeAllEventListeners",
  15. "hasEventListener",
  16. "dumpAllEventListeners",
  17. })
  18. return self.target_
  19. end
--示例
  1. local OneSprite = class("OneSprite",function()
  2. return display.newSprite("heart.png") end)
  3. function OneSprite:ctor()
  4. --加载组件以扩展自定义事件
  5. cc(self):addComponent("components.behavior.EventProtocol"):exportMethods()
  6. self:performWithDelay(function() self:hide()end,3.0)
  7. end
  8. -- 抽象hide 方法调用这个方法隐藏精灵并发送一个精灵隐藏的事件监听给监听器
  9. function OneSprite:hide()
  10. self:setVisible(false)
  11. --发送事件 参数为table name字段不能为空
  12. self:dispatchEvent({name= "HideSprite"})
  13. end
  14. function OneSprite:onEnter()
  15. end
  16. function OneSprite:onExit()
  17. self:removeAllEventListeners()
  18. end
  19. return OneSprite
  1. local OneSprite = import("app.scenes.OneSprite")
  2. local MainScene = class("MainScene",function() return display.newScene("MainScene") end)
  3. function MainScene:ctor()
  4. local sprite = OneSprite.new()
  5. sprite:pos(display.size.width/2,display.size.height/2)
  6. sprite:addTo(self):addEventListener("HideSprite",handler(self,self.onEvent))
  7. end
  8. function MainScene:onEvent()
  9. print("sprite hide!")
  10. end
  11. function MainScene:onEnter()
  12. end
  13. function MainScene:onExit()
  14. end
  15. return MainScene





posted @ 2017-01-04 14:26  feizuzu  阅读(214)  评论(0编辑  收藏  举报