在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. Object-c的一些基本概念

    自学了一个多月的IOS,对Object-C也有了初步的认识,也有很多观点不知道是否正确,所以整理了一下,和小伙伴们分享分享 1.OC中使用的消息机制代替调用方法 区别:使用消息结构的语言,其运行时缩引 ...

  2. 笔记-AndroidStudio开发环境的搭建

    首先当然是下载AndroidStudio,目前最新的稳定版是1.1 然后下载studio版本的sdk,如果用原装sdk,需要更新   安装的过程中会选择sdk的路径,此时如果已经解压了原装sdk,会进 ...

  3. BZOJ 3207: 花神的嘲讽计划Ⅰ( hash + 可持久化线段树 )

    O(NK)暴力搞出所有子串的哈希值, 然后就对哈希值离散化建权值线段树, 就是主席树的经典做法了.总时间复杂度O(NK+(N+Q)logN) ----------------------------- ...

  4. hadoop搭建杂记:Linux下ssh免密码登陆

    关于ssh免密码登陆的问题 关于ssh免密码登陆的问题 linux下可以用ssh-keygen来生成公钥/私钥对 ①生成id_rsa和id_rsa.pub公钥/私钥对,自动在~/.ssh下生成文件(亦 ...

  5. Umbraco学习2------数据类型

    一.基础概念 在使用Umbraco这类CMS制作网站之前,先要搞清楚的是,和概念中网站制作的区别. 暂时忘掉所谓的ADO.NET存储.忘掉ASP.NET.忘掉多层架构什么的. 只需要关注:要显示什么. ...

  6. 转: git常用命令

    # git配置 #---------------------------------------------- #配置用户名和邮箱: $ git config --global user.name & ...

  7. android小知识之邮箱地址输入自动完成

    虽然不难,但是容易忘记,做个备忘吧 package com.guet.zhuge; import android.app.Activity; import android.os.Bundle; imp ...

  8. Consuming Hidden WCF RIA Services

    原文 http://codeseekah.com/2013/07/05/consuming-hidden-wcf-ria-services/ A Silverlight application mad ...

  9. Spring Boot MyBatis 连接数据库

    最近比较忙,没来得及抽时间把MyBatis的集成发出来,其实mybatis官网在2015年11月底就已经发布了对SpringBoot集成的Release版本,Github上有代码:https://gi ...

  10. Installing perl and writing your first perl program in Ubuntu

    Installing perl and writing your first perl program in Ubuntu     Installing perl and writing your f ...