文档章节

quick中自定义事件

piggybear
 piggybear
发布于 2015/02/16 10:28
字数 687
阅读 10
收藏 0
quick中的事件机制在官方的文档中已经讲解得很清楚了   查看这里
这些方法能处理绝大多数的事件,但如果要实现自定义的事件(例如我们自己实现一个类,对该类添加自定义的事件处理)就需要对类进行扩展了。

下面讲讲如何使用自定义(扩展)的事件机制。

首先认识一下类EventProxy,就是这个类实现了自定义的消息处理
该类有四个函数,分别是
?
1
2
3
4
addEventListener
removeEventListener
removeAllEventListenersForEvent
removeAllEventListeners

根据名字就能知道这几个函数的作用

下面以我们定义一个继承自Node的类来了解自定义事件的处理方法
定义类EXNode如下
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
local EXNode = class( "EXNode" , function ()
     return display.newNode()
end )
 
function EXNode:ctor()
     cc.GameObject.extend(self):addComponent( "components.behavior.EventProtocol" ):exportMethods()
 
     cc.ui.UIPushButton.new({normal = "button/button_normal.png" , pressed = "button/button_selected.png" })
         :align(display.CENTER, display.cx, display.cy)
         :onButtonClicked( function ()
             self:getChildEvent()
         end )
         :addTo(self)
end
 
function EXNode:getChildEvent()
    self:dispatchEvent({name = "MY_NEWS" })
end
 
function EXNode:onEnter()
     self:setTouchEnabled( true )
end
 
function EXNode:onExit()
     self:removeAllEventListeners()
end
 
return EXNode

最重要的是这句cc.GameObject.extend(self):addComponent("components.behavior.EventProtocol"):exportMethods()
该句为EXNode类添加了扩展的事件处理方法,现在我们可以使用EventProxy中的函数了,通过这些函数我们可以让EXNode接收到自定义的消息然后进行处理
在该类中我们创建一个按钮,用按钮来模拟我们游戏中的某些操作,当按钮按下的时候发送消息给其父节点EXNode,我们将该自定义的消息名字设置为MY_NEWS

我们在Scene中使用EXNode
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
local EXNode = import( "..class.EXNode" )
 
local EventScene = class( "EventScene" , function ()
     return display.newScene( "EventScene" )
end )
 
function EventScene:ctor()
     self.exNode = EXNode.new()
     self.exNode:addEventListener( "MY_NEWS" , handler(self, self.onMynews))
     self:addChild(self.exNode)
end
 
function EventScene:onMynews()
     printLog( "INFO" , "父Node知道了子Node发送过来的消息" )
end
 
function EventScene:onEnter()
end
 
function EventScene:onExit()
end
 
return EventScene


在EventScene中创建一个EXNode对象,
self.exNode:addEventListener("MY_NEWS", handler(self, self.onMynews))让exNode对象监听自定义的事件,
从这句可以看到我们监听的事件信息名称为MY_NEWS(即EXNode中按钮点击后发送的自定义消息),回调函数为EventScene的onMynews函数

测试程序,点击按钮模拟游戏操作,在EXNode内部分发出名称为MY_NEWS的消息,之后exNode对象就能够接收到消息,然后调用回调函数onMynews进行处理了。


其实内容很简单,给新手入门用吧,大神自动忽略。

第一次尝试写这个,如有错误,希望大家指出。 

来源:http://www.cocoachina.com/bbs/read.php?tid-235255.html

本文转载自:http://blog.csdn.net/aa294194253/article/details/40385049

共有 人打赏支持
piggybear
粉丝 3
博文 237
码字总数 37552
作品 0
西安
技术主管
Qt Quick实现的涂鸦程序

之前一直以为 Qt Quick 里 Canvas 才可以自绘,后来发觉不是,原来还有好几种方式都可以绘图!可以使用原始的 OpenGL(Qt Quick 使用 OpenGL 渲染),可以构造QSGNode 来绘图,还可以使用 QP...

foruok
2014/11/21
0
0
quick lua下自定义事件处理

Quick-Cocos2d-x中的事件机制在官方的文档中已经讲解得很清楚了,查看这里。 这些方法能处理绝大多数的事件,但如果要实现自定义的事件(例如我们自己实现一个类,对该类添加自定义的事件处理...

80后小子
2015/01/29
0
0
Qt Quick 中的 drag and drop(拖放)

研究了一下 Qt Quick 里的 drag and drop 功能,大概讲一下。 类库 Qt Quick与 drag and drop 相关的,有这么几个类库: DropArea DragEvent Drag DropArea DropArea 其实是个方便类,它不可...

foruok
2014/12/08
0
0
开源中国 OsChina Android 客户端源码分析(4)自定义对话框

OsChina在主界面底部导航处设置了快速操作的对话框,图示: OsChina采用了Dialog的方式实现,有些人可能会用到popupwindow去实现。通过分析其实现原理,来学到对自己有用的东西。 1布局文件,...

姬鑫
2015/05/21
0
1
quick-shell.js简介

发布自Kindem的博客,欢迎大家转载,但是要注意注明出处 quick-shell.js简介 一直想自己发布一个npm包试试,正巧刚刚学完操作系统,写了很多shell类型的小程序,就想着要不在nodejs上封装一套...

Kindem
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python基础案例教程

一、超市买薯片 # 用户输入薯片的单价danjia = float(input("薯片的单价"))# 用户输入购买袋数daishu = int(input("购买的袋数"))# 计算总价zongjia = danjia * daishu# 输出结果...

linuxprobe16
49分钟前
0
0
采用CXF框架发布webservice

package cn.it.ws.cxf.a;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;@WebService(serviceName="languageManager")public interface ......

江戸川
51分钟前
0
0
HashMap工作原理及实现

HashMap工作原理及实现 1. 概述 什么时候会使用HashMap?他有什么特点? 知道HashMap的工作原理吗? 知道get和put的原理吗? 知道hash的实现吗?为什么要这样实现? 如果HashMap的大小超过了...

傅小水water
59分钟前
1
0
swagger如何屏蔽某些接口,不对外公开--使用@ApiIgnore

@ApiIgnore@RestController@RequestMapping(value = "/i18nTest")public class I18nTestController {// @Resource// private LocaleMessageSourceService localeMessageSourceSe......

karma123
今天
1
0
大数据技术学习,大数据处理为何选择Spark,而不是Hadoop

大数据处理为何选择Spark,而不是Hadoop。 一.基础知识 1.Spark Spark是一个用来实现快速而通用的集群计算的平台。 在速度方面,Spark扩展了广泛使用的MapReduce计算模型,而且高效地支持更多...

董黎明
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部