quick-cocos2d-x游戏开发【13】——节点生命周期事件,帧事件等其他事件

在前面已经学过了“触摸事件”,"触摸捕获事件",“按键事件”,此外,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 plain copy
  1. local layer = display.newLayer()    
  2.    self:addChild(layer)  
  3.    layer:addNodeEventListener(cc.NODE_EVENT, function (event)  
  4.        if event.name == "enter" then  
  5.            print("enter")  
  6.        elseif event.name == "exit" then  
  7.            print("exit")  
  8.        elseif event.name == "cleanup" then  
  9.            print("cleanup")  
  10.        elseif event.name == "enterTransitionFinish" then  
  11.            print("enterTransitionFinish")  
  12.        elseif event.name == "exitTransitionStart" then  
  13.            print("exitTransitionStart")  
  14.        end  
  15.    end)  

cc.NODE_EVENT可以响应一个节点的onenter,onexit,cleanup,exitTransitionStart,enterTransitionFinish这些事件,当然如果不使用添加监听的方式,我们也可以重写相应的函数,

[html]  view plain copy
  1. function MyScene:onEnter()  
  2.   
  3. end  
  4.   
  5. function MyScene:onExit()  
  6.   
  7. end  


接着来看这个 cc.NODE_ENTER_FRAME_EVENT 帧事件

帧事件就是update定时器,每一帧调用,如果要使用,除了要添加监听,还需要开启update定时器,像这样的代码,

[html]  view plain copy
  1. local layer = display.newLayer()    
  2.    self:addChild(layer)  
  3.    layer:scheduleUpdate()  
  4.    layer:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, function(dt)  
  5.        print(dt)  
  6.    end)  

对于其他几个事件就不多介绍了,来说说怎么掌握他们。

主要的问题是对于回调函数中的参数变量,例如加速度事件,event后面可以点出哪些呢,我是这么确定的,


因为在2.2.3版本开始,事件分发机制就重新制作了,进入 \quick-cocos2d-x-2.2.5\framework\cocos2dx目录下,再看前面对于这些事件的分类,加速度事件属于层的预定义,所以在LayerEx.lua文件中,触屏,帧事件等属于节点预定义,所以就在NodeEx.lua文件中。


然后打开这些文件就可以发现它们有哪些可用字段了,例如加速度事件,打开LayerEx.lua文件,可以看到这样的代码,

[html]  view plain copy
  1. function Layer:addAccelerateEventListener(listener)  
  2.     PRINT_DEPRECATED("Layer.addAccelerateEventListener() is deprecated, please use Layer.addNodeEventListener()")  
  3.     self:addNodeEventListener(c.ACCELERATE_EVENT, function(event)  
  4.         listener(event.x, event.y, event.z, event.timestamp)  
  5.     end)  
  6. end  

listener里面的这些就是quick提供的了,这样一来就可以添加事件监听了,并在回调函数中写相应的事件了。这些是被摒弃的写法了,但里面都提供了使用addNodeEventListener方式,所以。。。


以上就是全部事件的介绍了。我觉得quick到这掌握的就应该差不多了,可以写些小游戏来耍耍了~不知道大家有没有兴趣自己写个呢,哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值