在Cocos2d-x中经常碰到 init() 和 onEnter()

init()和onEnter()这两个方法都是CCNode的方法。

1.二者的执行顺序是:先init() 后onEnter()。

2.init()在类的初始化时只会调用一次。

3.onEnter在该类被载入场景的时候被调用,可能会发生多次。

下面提供这样一个demo判断二者的执行顺序:

BaseFile.h

#ifndef __trydemo__BaseFile__
#define __trydemo__BaseFile__ #include <iostream>
#include "cocos2d.h"
USING_NS_CC;
class BaseFile:public CCLayer
{
public:
bool init();
void onEnter();
CREATE_FUNC(BaseFile);
};
#endif /* defined(__trydemo__BaseFile__) */

BaseFile.cpp

#include "BaseFile.h"

bool BaseFile::init()
{
if (!CCLayer::init()) {
return false;
}
CCLog("base layer init;");
return true;
} void BaseFile::onEnter()
{
CCLog("base layer onEnter;");
}

NextFile.h

#ifndef __trydemo__NextFile__
#define __trydemo__NextFile__ #include <iostream>
#include "BaseFile.h" class NextFile:public BaseFile
{
public:
static CCScene* scene();
bool init();
void onEnter();
CREATE_FUNC(NextFile);
};
#endif /* defined(__trydemo__NextFile__) */

NextFile.cpp

#include "BaseFile.h"

bool NextFile::init()
{
if (!BaseFile::init()) {
return false;
}
CCLog("next layer init;");
return true;
} void NextFile::onEnter()
{
BaseFile::onEnter();
CCLog("next layer onEnter;");
} CCScene* NextFile::scene()
{
CCScene *scene = CCScene::create();
NextFile * layer = NextFile::create();
scene->addChild(layer);
return scene;
}

程序run NextFile这个场景。

终端执行结果:

Cocos2d: base layer init;
Cocos2d: next layer init;
Cocos2d: base layer onenter;
Cocos2d: next layer onenter;

Cocos2d-x init() 和 onEnter() 区别的更多相关文章

  1. init()和onEnter()方法的区别

    init()和onEnter()这俩个方法都是CCNode的方法.其区别如下: 1.其被调用的顺序是先init(),后onEnter(). 2.init()在类的初始化时只会调用一次. 3.onEnt ...

  2. git init 与 git init --bare 的区别

    git init  和 git init –bare 的区别 使用命令"git init --bare"(bare汉语意思是:裸,裸的)初始化的版本库(暂且称为bare repos ...

  3. cocos2d-x中的init,onEnter,onExit......

    CCNode的init()方法和onEnter()方法: 一.调用顺序显示FirstScene时: FirstLayer::initFirstLayer::onEnterFirstLayer::onE ...

  4. JVM思考-init和clinit区别

    JVM思考-init和clinit区别 目录:JVM总括:目录 clinit和init的区别其实也就是Class对象初始化对象初始化的区别,详情看我上一篇博客: JVM总括四-类加载过程.双亲委派模型 ...

  5. (转)Linux下/etc/rc.local与/etc/init.d的区别与联系

    Linux下/etc/rc.local与/etc/init.d的区别与联系 2012-10-13 20:14:52|  分类: Linux学习|字号 订阅     1./etc/rc.local 这是 ...

  6. 深入理解jvm--Java中init和clinit区别完全解析(转)

    转自:http://blog.csdn.net/u013309870/article/details/72975536 init和clinit区别 ①init和clinit方法执行时机不同 init是 ...

  7. weex 项目开发(一) weex create project 与 weex init project 的区别

    开发环境配置:http://www.cnblogs.com/crazycode2/p/7822961.html 1. weex create project  与  weex init project ...

  8. git init和git init –bare的区别:

    感谢原文作者:ljchlx 原文链接:https://blog.csdn.net/ljchlx/article/details/21805231 git init 和 git init –bare 的 ...

  9. cocos2dx场景切换中init、onEnter、onEnterTransitionDidFinish的调用顺序

    这些方法调用的先后顺序如下(使用 replaceScene 方法): 1. 第2个场景的 scene 方法 2. 第2个场景的 init 方法 3. 第2个场景的 onEnter 方法 4. 转场 5 ...

随机推荐

  1. leetcode String to Integer (atoi) python

    class Solution(object): def myAtoi(self, str): """ :type str: str :rtype: int "& ...

  2. hdu 4545 魔法串 2013金山西山居创意游戏程序挑战赛——初赛(1)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4545 这题太坑了,小明的串可以任意删掉某个字符 这句话不知道大家是怎么理解的,我觉得应该是能够删除其中 ...

  3. STL"源码"剖析

    STL"源码"剖析-重点知识总结   STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略 ...

  4. 微软提供的虚拟磁盘API

    https://msdn.microsoft.com/en-us/library/windows/desktop/dd323684(v=vs.85).aspx https://msdn.microso ...

  5. HDU 1512 Monkey King(左偏树+并查集)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1512 [题目大意] 现在有 一群互不认识的猴子,每个猴子有一个能力值,每次选择两个猴子,挑出他们所 ...

  6. 排序算法 - 快速排序(Quick Sort)

    算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). (1) 分治法的基本思想  ...

  7. 关于如何使用three.js的小教程&lt;一&gt;

    昨天看了看three.js这个东西,身为一个3D引擎,他还是非常强大的.官网上有个tutorial讲的不甚具体.http://aerotwist.com/tutorials/getting-start ...

  8. ANDROID自己定义视图——onLayout源代码 流程 思路具体解释

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 简单介绍: 在自己定义view的时候.事实上非常easy.仅仅须要知道3步骤: 1.測量- ...

  9. java final 关键字醍醐灌顶

    醍醐灌顶: final 关键字,它可以修饰数据 .方法.类. 可能有些同学傻傻分不清出,这里可以快速弄懂final; final 实例域: 可以将实例域定义为final,构建对象时必须初始化这样的域, ...

  10. bmob云 实现注册和登录的功能

    向大家介绍一款我感觉非常溜的一款后端云服务bmob云 借助bmob云我们可以实现注册和登录页面的功能,下面就让我给大家演示一下借助bmob云服务实现这两个功能吧.  1. 用户是一个应用程序的核心.对 ...