quick-cocos2d-x游戏开发【13】——节点生命周期事件,帧事件等其他事件
2015-04-22 17:15
477 查看
在前面已经学过了“触摸事件”,"触摸捕获事件",“按键事件”,此外,quick还有其他几个事件,前面已经列过有这些,
预定义的节点事件:
cc.NODE_EVENT - enter, exit 等事件
cc.NODE_ENTER_FRAME_EVENT - 帧事件
cc.NODE_TOUCH_EVENT - 触摸事件
cc.NODE_TOUCH_CAPTURE_EVENT - 捕获触摸事件
预定义的层事件:
cc.ACCELERATE_EVENT - 重力感应事件
cc.KEYPAD_EVENT - 硬件按键事件
预定义的菜单事件:
cc.MENU_ITEM_CLICKED_EVENT - CCMenu 菜单项点击事件
这里我就简单拿两个来说下,掌握起来都很容易。先看这个cc.NODE_EVENT。
节点事件其实就是节点的几个生命周期,这在cocos2dx c++中一定有所了解。直接看代码吧,
[html] view
plaincopy
local layer = display.newLayer()
self:addChild(layer)
layer:addNodeEventListener(cc.NODE_EVENT, function (event)
if event.name == "enter" then
print("enter")
elseif event.name == "exit" then
print("exit")
elseif event.name == "cleanup" then
print("cleanup")
elseif event.name == "enterTransitionFinish" then
print("enterTransitionFinish")
elseif event.name == "exitTransitionStart" then
print("exitTransitionStart")
end
end)
cc.NODE_EVENT可以响应一个节点的onenter,onexit,cleanup,exitTransitionStart,enterTransitionFinish这些事件,当然如果不使用添加监听的方式,我们也可以重写相应的函数,
[html] view
plaincopy
function MyScene:onEnter()
end
function MyScene:onExit()
end
接着来看这个 cc.NODE_ENTER_FRAME_EVENT 帧事件
帧事件就是update定时器,每一帧调用,如果要使用,除了要添加监听,还需要开启update定时器,像这样的代码,
[html] view
plaincopy
local layer = display.newLayer()
self:addChild(layer)
layer:scheduleUpdate()
layer:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, function(dt)
print(dt)
end)
对于其他几个事件就不多介绍了,来说说怎么掌握他们。
主要的问题是对于回调函数中的参数变量,例如加速度事件,event后面可以点出哪些呢,我是这么确定的,
因为在2.2.3版本开始,事件分发机制就重新制作了,进入 \quick-cocos2d-x-2.2.5\framework\cocos2dx目录下,再看前面对于这些事件的分类,加速度事件属于层的预定义,所以在LayerEx.lua文件中,触屏,帧事件等属于节点预定义,所以就在NodeEx.lua文件中。
然后打开这些文件就可以发现它们有哪些可用字段了,例如加速度事件,打开LayerEx.lua文件,可以看到这样的代码,
[html] view
plaincopy
function Layer:addAccelerateEventListener(listener)
PRINT_DEPRECATED("Layer.addAccelerateEventListener() is deprecated, please use Layer.addNodeEventListener()")
self:addNodeEventListener(c.ACCELERATE_EVENT, function(event)
listener(event.x, event.y, event.z, event.timestamp)
end)
end
listener里面的这些就是quick提供的了,这样一来就可以添加事件监听了,并在回调函数中写相应的事件了。这些是被摒弃的写法了,但里面都提供了使用addNodeEventListener方式,所以。。。
以上就是全部事件的介绍了。我觉得quick到这掌握的就应该差不多了,可以写些小游戏来耍耍了~不知道大家有没有兴趣自己写个呢,哈哈
预定义的节点事件:
cc.NODE_EVENT - enter, exit 等事件
cc.NODE_ENTER_FRAME_EVENT - 帧事件
cc.NODE_TOUCH_EVENT - 触摸事件
cc.NODE_TOUCH_CAPTURE_EVENT - 捕获触摸事件
预定义的层事件:
cc.ACCELERATE_EVENT - 重力感应事件
cc.KEYPAD_EVENT - 硬件按键事件
预定义的菜单事件:
cc.MENU_ITEM_CLICKED_EVENT - CCMenu 菜单项点击事件
这里我就简单拿两个来说下,掌握起来都很容易。先看这个cc.NODE_EVENT。
节点事件其实就是节点的几个生命周期,这在cocos2dx c++中一定有所了解。直接看代码吧,
[html] view
plaincopy
local layer = display.newLayer()
self:addChild(layer)
layer:addNodeEventListener(cc.NODE_EVENT, function (event)
if event.name == "enter" then
print("enter")
elseif event.name == "exit" then
print("exit")
elseif event.name == "cleanup" then
print("cleanup")
elseif event.name == "enterTransitionFinish" then
print("enterTransitionFinish")
elseif event.name == "exitTransitionStart" then
print("exitTransitionStart")
end
end)
cc.NODE_EVENT可以响应一个节点的onenter,onexit,cleanup,exitTransitionStart,enterTransitionFinish这些事件,当然如果不使用添加监听的方式,我们也可以重写相应的函数,
[html] view
plaincopy
function MyScene:onEnter()
end
function MyScene:onExit()
end
接着来看这个 cc.NODE_ENTER_FRAME_EVENT 帧事件
帧事件就是update定时器,每一帧调用,如果要使用,除了要添加监听,还需要开启update定时器,像这样的代码,
[html] view
plaincopy
local layer = display.newLayer()
self:addChild(layer)
layer:scheduleUpdate()
layer:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, function(dt)
print(dt)
end)
对于其他几个事件就不多介绍了,来说说怎么掌握他们。
主要的问题是对于回调函数中的参数变量,例如加速度事件,event后面可以点出哪些呢,我是这么确定的,
因为在2.2.3版本开始,事件分发机制就重新制作了,进入 \quick-cocos2d-x-2.2.5\framework\cocos2dx目录下,再看前面对于这些事件的分类,加速度事件属于层的预定义,所以在LayerEx.lua文件中,触屏,帧事件等属于节点预定义,所以就在NodeEx.lua文件中。
然后打开这些文件就可以发现它们有哪些可用字段了,例如加速度事件,打开LayerEx.lua文件,可以看到这样的代码,
[html] view
plaincopy
function Layer:addAccelerateEventListener(listener)
PRINT_DEPRECATED("Layer.addAccelerateEventListener() is deprecated, please use Layer.addNodeEventListener()")
self:addNodeEventListener(c.ACCELERATE_EVENT, function(event)
listener(event.x, event.y, event.z, event.timestamp)
end)
end
listener里面的这些就是quick提供的了,这样一来就可以添加事件监听了,并在回调函数中写相应的事件了。这些是被摒弃的写法了,但里面都提供了使用addNodeEventListener方式,所以。。。
以上就是全部事件的介绍了。我觉得quick到这掌握的就应该差不多了,可以写些小游戏来耍耍了~不知道大家有没有兴趣自己写个呢,哈哈
相关文章推荐
- quick-cocos2d-x游戏开发【13】——节点生命周期事件,帧事件等其他事件
- Quick-Cocos2d-x游戏开发触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT
- quick-cocos2d-x游戏开发【12】——硬件按键事件
- quick-cocos2d-x游戏开发【10】——触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT
- quick-cocos2d-x游戏开发【12】——硬件按键事件
- quick-cocos2d-x游戏开发【10】——触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT
- cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检測
- 【iOS-Cocos2d游戏开发之五】【1】多触点与触屏事件详解(单一监听、事件分发) 推荐
- quick-cocos2d-x游戏开发【3】——display.newSprite创建向导
- quick-cocos2d-x游戏开发【7】——scheduler 定时器
- (转)【iOS-cocos2d-X 游戏开发之十】自定义CCSprite/Layer/CCNode及静态类模版&自定义类细节说明&Cocos2dx触屏事件讲解
- quick-cocos2d-x从零开始游戏开发笔记(四):参照Flappy Bird制作第一个游戏②
- 【iOS-Cocos2d游戏开发】触屏事件处理机制
- 游戏开发随手记:cocos2d ccLayer响应触摸事件方法
- 【iOS-Cocos2d游戏开发之五】多触点与触屏事件详解(单一监听、事件分发)
- Cocos Code IDE + Quick-Cocos2d-x 快速开发游戏
- 【iOS-Cocos2d游戏开发之五】【2】多触点与触屏事件详解(单一监听、事件分发)
- quick-cocos2d-x游戏开发【5】——创建菜单
- 【Cocos2d游戏开发之六】对触屏事件追加讲解,解决无法触发ccTouchMoved事件[重要!]
- 【cocos2d-x游戏开发】触摸事件