层(Layer)的生命周期函数有如下:

init()。初始化层调用。

onEnter()。进入层时候调用。

onEnterTransitionDidFinish()。进入层而且过渡动画结束时候调用。

onExit()。退出层时候调用。

onExitTransitionDidStart()。退出层而且开始过渡动画时候调用。

cleanup()。层对象被清除时候调用。

提示  层(Layer)继承于节点(Node),这些生命周期函数根本上是从Node继承而来。事实上所有Node对象(包括:场景、层、精灵等)都有这些函数,只要是子类化这些类都可以重写这些函数,来处理这些对象的不同生命周期阶段事件。

我们重写HelloWorld层的中几个生命周期函数,代码如下:

  1. bool HelloWorld::init()
  2. {
  3. if( !Layer::init() )
  4. {
  5. returnfalse;
  6. }
  7. log("HelloWorldinit");
  8. ......
  9. returntrue;
  10. }
  11. void HelloWorld::onEnter()
  12. {
  13. Layer::onEnter();
  14. log("HelloWorldonEnter");
  15. }
  16. voidHelloWorld::onEnterTransitionDidFinish()
  17. {
  18. Layer::onEnterTransitionDidFinish();
  19. log("HelloWorldonEnterTransitionDidFinish");
  20. }
  21. void HelloWorld::onExit()
  22. {
  23. Layer::onExit();
  24. log("HelloWorldonExit");
  25. }
  26. voidHelloWorld::onExitTransitionDidStart()
  27. {
  28. Layer::onExitTransitionDidStart();
  29. log("HelloWorldonExitTransitionDidStart");
  30. }
  31. void HelloWorld::cleanup()
  32. {
  33. Layer::cleanup();
  34. log("HelloWorldcleanup");
  35. }

注意 在重写层生命周期函数中,第一行代码应该是调用父类的函数,例如HelloWorld::onEnter()中第一行应该是Layer::onEnter()函数,如果不调用父类的函数可能会导致层中动画、动作或计划无法执行。

如果HelloWorld是第一个场景,当启动HelloWorld场景时候,它的调用顺序如下图所示:

更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》
本书交流讨论网站:http://www.cocoagame.net
欢迎加入cocos2d-x技术讨论群:257760386、327403678
 

Cocos2d-x场景生命周期函数介绍的更多相关文章

  1. react 生命周期函数介绍

    constructor():构造函数 执行:组件加载钱最先调用一次,仅调用一次. 作用:定义状态机变量. 注意:第一个语句必须为super(), 否则会报错:'this' is not allowed ...

  2. VUE3 之 生命周期函数

    1. 概述 老话说的好:天生我材必有用,千金散尽还复来. 言归正传,今天我们来聊一下 VUE 的生命周期函数. 所谓生命周期函数,就是在某一条件下被自动触发的函数. 2. VUE3 生命周期函数介绍 ...

  3. 10. react 基础 ref 的使用 及 React 16 的生命周期函数 及 生命周期函数使用场景

    一. ref 的使用 ( 直接获取 DOM 元素 ) 在 input 标签上 可以使用 ref 属性 获取当前DOM节点 eg: import React , { Component, Fragmen ...

  4. React组件详细介绍及其生命周期函数

    组件的详细说明 通过Reac.createClass({...})创建组件的时候,应该有一个render()方法,也可以在其中添加生命周期函数. render方法 当调用该方法的时候,会检测this. ...

  5. 20Flutter通过TabController定义顶部tab切换,介绍生命周期函数

    基本使用: import 'package:flutter/material.dart'; class TabBarControllerPage extends StatefulWidget { Ta ...

  6. react系列(一)JSX语法、组件概念、生命周期介绍

    JSX React中,推出了一种新的语法取名为JSX,它给了JS中写HTML标签的能力,不需要加引号.JSX的语法看起来是一种模板,然而它在编译以后,会转成JS语法,只是书写过程中的语法糖. JSX的 ...

  7. Activity的生命周期函数

    前言: 上一篇文章写了关于Activity生命周期和生命周期状态的介绍,这一篇文章给大家聊聊Activity生命周期函数. 主Activity: 应用程序的入口一般都是桌面应用程序图标,用户点击应用图 ...

  8. Unity3D学习笔记(一):Unity简介、游戏物体、组件和生命周期函数

    Project(工程.项目):工程是把游戏开发当前所需要的资源归类管理用的. Console控制台:日志.报错.调试,右上角,消息过滤 Assets:资源,存储游戏中一切用到的资源 Library:临 ...

  9. Cocos2d-x Lua中生命周期函数

    场景(Scene)以及所有节点(Node)的生命周期事件如下:enter.进入场景时候触发.enterTransitionFinish.进入场景而且过渡动画结束时候触发.exit.退出场景时候触发 . ...

随机推荐

  1. Codeforces Round #340 (Div. 2) D. Polyline 水题

    D. Polyline 题目连接: http://www.codeforces.com/contest/617/problem/D Descriptionww.co There are three p ...

  2. 泛型Dictionary的用法详解

    泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的 ...

  3. [Express] Level 1: First Step

    Installing Express Let's start building our new Express application by installing Express. Type the ...

  4. jqgrid 获取当前页码

    jqgrid 获取当前页码 $('#gridTable').getGridParam('page'); /** *刷新,jqGrid刷新当前列表页代码 */ function refresh(url) ...

  5. Linux文件系统的几个性能测试软件小结

    曾经测试Linux系统下的分布式集群系统的性能,使用了一些测试软件,公司让我给部门同事做一次基础培训,于是翻看以前所写的记录资料挑选了其中几个,所记之处并不完全,只记录使用的功能. 1.Iozone ...

  6. 加密数据的填充方式(Padding)

    1.填充数据为填充字节的长度 这种填充方式中,填充字符串由一个字节序列组成,每个字节填充该字节序列的长度.假定块长度为8,原文数据长度9,则填充字节数等于0x07:如果明文数据长度为8的整数倍,则填充 ...

  7. php对比辨析之 mysql_escape_string & mysql_real_escape_string & addsalshes

    概述: addslashes和mysql_real_escape_string.都是为了使数据安全的插入到数据库中而进行过滤. addslashes 转义的字符是单引号(').双引号("). ...

  8. servlet 和filter 抛出404等异常

    1. servlet抛出错误代码异常,如404 public void doGet(HttpServletRequest request, HttpServletResponse response) ...

  9. kafka监控之KafkaOffsetMonitor

    参考自:http://www.cnblogs.com/sunxucool/p/3904850.html 流行的kafka监控有kafka-web-console.KafkaOffsetMonitor. ...

  10. VSS错误:The Sourcesafe Web service cannot be accessed at the specified address

    第一次使用正常,今天再次打开vs项目的时候就突然连不上vss的服务器了.       手动修改连接的时候会让输入一个address(http的) (一般正常的连接会是浏览的方式找到服务器文件的地址的) ...