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++中一定有所了解。直接看代码吧,

 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这些事件,当然如果不使用添加监听的方式,我们也可以重写相应的函数,

function MyScene:onEnter()

end

function MyScene:onExit()

end

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

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

 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文件,可以看到这样的代码,

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到这掌握的就应该差不多了,可以写些小游戏来耍耍了~不知道大家有没有兴趣自己写个呢,哈哈

时间: 2024-10-09 09:30:16

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

cocos2dx学习之路----第十章(Node节点生命周期详解)

这一篇我们就来看看Node节点的生命周期问题. 对于Node节点的生命周期,也称回调事件的回调.当对节点进行操作时,比如被添加或者移除,它默认都会调用自己的一些事件方法.现在就让我们看看属于它事件的回调方法有哪些,如下所示: virtual void onEnter(); //被添加到场景中的节点时调用 virtual void onEnterTransitionDidFinish(); //被添加到场景中的节点完成时调用 virtual void onExitTransitionDidStar

【Android开发-8】生命周期,Activity中打开另外一个Activity

前言:生命中有许多人陪伴自己走过一生中的某段旅程,只是有些人只是某阶段出现,有些人却陪伴自己很久.就像小学.中学.高中.大学,那些曾经以为会长久拥有的,当经历过天涯各地地忙碌于生活,或如意,或失意:渐渐地那些画面只剩回忆.天涯各自安命,能在一起的就尽力珍惜吧,不在一起地就衷心地祝福,我们都需要一种姿态生活下去!Android中的Activity的生命中,我们经常需要打开另外一个Activity,即另外一个界面.这个可能出现的时间很短暂,然后又回到主界面.但是这两个Activity都在各自的生命周

【Android开发-7】生命周期,Activity的生老病死

前言:生老病死,是每个人都要经历的事情.所以不必惊慌,静下心,想想自己在人生所处的每个阶段该做些什么,才能让自己的人生价值提高,或者说自身价值提高.在一个生命周期里,某个阶段该完成的事,没完成,也许就会影响到整个生命周期.所以有时候人生不能堕落,一堕落也许许多美好的事情就会错过了,等待你的就只有无声的忏悔! 对于Activity的生命周期的流程,最经典的一张图如下: 1.一个Activity A启动时,它会经历下面各个阶段: onCreate()-->onStart()-->onResume(

【Unity游戏开发】用C#和Lua实现Unity中的事件分发机制EventDispatcher

一.简介 最近马三换了一家大公司工作,公司制度规范了一些,因此平时的业余时间多了不少.但是人却懒了下来,最近这一个月都没怎么研究新技术,博客写得也是拖拖拉拉,周六周天就躺尸在家看帖子.看小说,要么就是吃鸡,唉!真是罪过罪过.希望能从这篇博客开始有些改善吧,尽量少玩耍,还是多学习吧~ 好了扯得有点远了,来说说我们今天博客的主题——“用C#和Lua实现Unity中的事件分发机制”,事件分发机制或者叫事件监听派发系统,在每个游戏框架中都是不可或缺的一个模块.我们可以用它来解耦,监听网络消息,或者做一些

安卓开发 activity的生命周期以及启动模式

Activity生命周期 安卓活动由一个返回栈管理 安卓活动有四个状态 1.运行状态 当一个活动位于栈顶的时候,这个活动就处于运行状态,也就是和用户进行交互的那个界面. 2.暂停状态 当活动不处于栈顶,但依然可见.意思就是这个活动没有被完全覆盖,上面有一层对话框之类的. 3.停止状态 活动不处于栈顶,完全不可见.这个好理解吧,就是用户看不到了. 4.销毁状态 活动从栈中移除了,也就是被用户关闭了. Activity共有七个回调方法,覆盖了活动整个生命周期 1.onCreate() 活动创建时调用

iOS开发-ViewController的生命周期和切换

ViewController在App开发中是至关重要的一环,无论是页面的展示和数据之间的交互,ViewController提供了一个框架可以管理和构建App应用.iOS中构建App提供了两种方式一种是ViewController管理比如NavigationController和UITabBarController,另外一种就是我们经常打交道用到的自定义ViewController或者是常用UITableViewController展示我们需要的数据.下面这种苹果官网的图片可以加强理解: 生命周期

servlet的开发流程及生命周期

Servlet开发流程: 1.  在%TOMCAT_HOME%\webapps下WEB-INF的文件夹写一个文件web.xml (该网站的配置信息),建立一个名为classes的字文件夹 2.  开发servlet(导入servlet-api.jar) 3.  部署你的servlet 在web.xml中添加 <web-app> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>

javaWeb中servlet开发(3)——Servlet生命周期

生命周期:是一个程序的存在周期,servlet由于是受容器的管理,所以容器来决定其生命周期 1.servlet生命周期 2.servlet生命周期对应的方法 3.servlet生命周期代码 public class LifeCycleServlet extends HttpServlet{ public void init() throws ServletException{ System.out.println("** 1.Servlet初始化 --> init()") ; }

iOS开发-程序的生命周期

为了更好的管理程序,了解程序的生命周期是很有必要的. 运行结果: 1.首次启动: 2015-05-26 17:33:28.362 Live[4858:214241] 程序开始 2015-05-26 17:33:28.627 Live[4858:214241] 程序再次激活 2.按HOME键退出: 2015-05-26 17:35:33.335 Live[4858:214241] 程序暂停 2015-05-26 17:35:33.970 Live[4858:214241] 程序进入后台 3.再次进