[cocos2dx笔记018]cocos2dx 2.2.6 lua版控件回调
2016-04-12 09:51
447 查看
本文地址:http://www.cppblog.com/zdhsoft/archive/2016/04/12/213238.html
cocos2dx笔记汇总
用cococstudio编辑的UI,都是带Touch事件的,这样,使得我们编写UI逻辑处理简单很多了,这个是基于lua实现,不需要改cocos2dx引擎.
1 --判断是否是有效的事件类型
2 function isValidTouchEventType(paramEventType)
3 if paramEventType == TOUCH_EVENT_ENDED or paramEventType == TOUCH_EVENT_BEGAN or paramEventType == TOUCH_EVENT_MOVED or paramEventType == TOUCH_EVENT_CANCELED then
4 return true
5 else
6 return false
7 end
8 end
9 --根据Widget的tag来侦听
10 function AddListenerByTag(paramWidget, paramTag, paramEventType, paramCallBack)
11 if not paramWidget then
12 cclog("参数paramWidget为nil对象")
13 return
14 end
15 if not ui.isValidTouchEventType(paramEventType) then
16 cclog("未知的事件类型:"..paramEventType)
17 return
18 end
19
20 local st = ui.getWidgetByTag(paramWidget, paramTag)
21 if not st then
22 return
23 end
24
25 local function OnTouch(paramSender, paramType)
26 if paramType == paramEventType then
27 paramCallBack(paramSender, paramType)
28 end
29 end
30 st:addTouchEventListener(OnTouch)
31 end
32
33 --根据Widget的Name来侦听
34 function AddListenerByName(paramWidget, paramWidgetName, paramEventType, paramCallBack)
35 if not paramWidget then
36 cclog("参数paramWidget为nil对象")
37 return
38 end
39 if not ui.isValidTouchEventType(paramEventType) then
40 cclog("未知的事件类型:"..paramEventType)
41 return
42 end
43
44 local st = ui.getWidgetByName(paramWidget, paramWidgetName)
45 if not st then
46 return
47 end
48
49 local function OnTouch(paramSender, paramType)
50 if paramType == paramEventType then
51 paramCallBack(paramSender, paramType)
52 end
53 end
54 st:addTouchEventListener(OnTouch)
55 end
使用实例:
1 local stTopInfoItem = GUIReader:shareReader():widgetFromJsonFile("ui/top_info.json")
2 ui.AddListenerByTag(stTopInfoItem, TAG.TOP_RET, TOUCH_EVENT_ENDED, PlaceRandomLayer.OnReturnMain)
cocos2dx笔记汇总
用cococstudio编辑的UI,都是带Touch事件的,这样,使得我们编写UI逻辑处理简单很多了,这个是基于lua实现,不需要改cocos2dx引擎.
1 --判断是否是有效的事件类型
2 function isValidTouchEventType(paramEventType)
3 if paramEventType == TOUCH_EVENT_ENDED or paramEventType == TOUCH_EVENT_BEGAN or paramEventType == TOUCH_EVENT_MOVED or paramEventType == TOUCH_EVENT_CANCELED then
4 return true
5 else
6 return false
7 end
8 end
9 --根据Widget的tag来侦听
10 function AddListenerByTag(paramWidget, paramTag, paramEventType, paramCallBack)
11 if not paramWidget then
12 cclog("参数paramWidget为nil对象")
13 return
14 end
15 if not ui.isValidTouchEventType(paramEventType) then
16 cclog("未知的事件类型:"..paramEventType)
17 return
18 end
19
20 local st = ui.getWidgetByTag(paramWidget, paramTag)
21 if not st then
22 return
23 end
24
25 local function OnTouch(paramSender, paramType)
26 if paramType == paramEventType then
27 paramCallBack(paramSender, paramType)
28 end
29 end
30 st:addTouchEventListener(OnTouch)
31 end
32
33 --根据Widget的Name来侦听
34 function AddListenerByName(paramWidget, paramWidgetName, paramEventType, paramCallBack)
35 if not paramWidget then
36 cclog("参数paramWidget为nil对象")
37 return
38 end
39 if not ui.isValidTouchEventType(paramEventType) then
40 cclog("未知的事件类型:"..paramEventType)
41 return
42 end
43
44 local st = ui.getWidgetByName(paramWidget, paramWidgetName)
45 if not st then
46 return
47 end
48
49 local function OnTouch(paramSender, paramType)
50 if paramType == paramEventType then
51 paramCallBack(paramSender, paramType)
52 end
53 end
54 st:addTouchEventListener(OnTouch)
55 end
使用实例:
1 local stTopInfoItem = GUIReader:shareReader():widgetFromJsonFile("ui/top_info.json")
2 ui.AddListenerByTag(stTopInfoItem, TAG.TOP_RET, TOUCH_EVENT_ENDED, PlaceRandomLayer.OnReturnMain)
相关文章推荐
- 坑爹的CCARRAY_FOREACH
- 【步兵 cocos-js】cc.EditBox 的 快速创建
- 在cocos2d-x中使用RTTI
- 个人初做小游戏RunRunMagic(二) 背景循环和分数
- Cocos2d-x执行时错误:Cocos2d: Get data from file(xxx.xxx) failed!
- 个人初做小游戏RunRunMagic(一) 主要思想
- cocos2d 中 scene(), create(), init() 调用关系
- Cocos2d-html5帧动画
- Cocos2D中节点Z序的计算规则
- Cocos2D中节点Z序的计算规则
- Cocos2D中节点Z序的计算规则
- Cocos2D:变换(transforms)在图形编程中扮演的角色
- Cocos2D:变换(transforms)在图形编程中扮演的角色
- Cocos2D:变换(transforms)在图形编程中扮演的角色
- cocos2d开发中的变态bug
- 【日常吐槽 · 第二期】向cocos的更新速度致敬
- cocos2dx的图片载入
- 早期Swift中Cocos2D初始化代码的重构
- 早期Swift中Cocos2D初始化代码的重构
- 早期Swift中Cocos2D初始化代码的重构