Cocos2d-x init() 和 onEnter() 区别
在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() 区别的更多相关文章
- init()和onEnter()方法的区别
init()和onEnter()这俩个方法都是CCNode的方法.其区别如下: 1.其被调用的顺序是先init(),后onEnter(). 2.init()在类的初始化时只会调用一次. 3.onEnt ...
- git init 与 git init --bare 的区别
git init 和 git init –bare 的区别 使用命令"git init --bare"(bare汉语意思是:裸,裸的)初始化的版本库(暂且称为bare repos ...
- cocos2d-x中的init,onEnter,onExit......
CCNode的init()方法和onEnter()方法: 一.调用顺序显示FirstScene时: FirstLayer::initFirstLayer::onEnterFirstLayer::onE ...
- JVM思考-init和clinit区别
JVM思考-init和clinit区别 目录:JVM总括:目录 clinit和init的区别其实也就是Class对象初始化对象初始化的区别,详情看我上一篇博客: JVM总括四-类加载过程.双亲委派模型 ...
- (转)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 这是 ...
- 深入理解jvm--Java中init和clinit区别完全解析(转)
转自:http://blog.csdn.net/u013309870/article/details/72975536 init和clinit区别 ①init和clinit方法执行时机不同 init是 ...
- weex 项目开发(一) weex create project 与 weex init project 的区别
开发环境配置:http://www.cnblogs.com/crazycode2/p/7822961.html 1. weex create project 与 weex init project ...
- git init和git init –bare的区别:
感谢原文作者:ljchlx 原文链接:https://blog.csdn.net/ljchlx/article/details/21805231 git init 和 git init –bare 的 ...
- cocos2dx场景切换中init、onEnter、onEnterTransitionDidFinish的调用顺序
这些方法调用的先后顺序如下(使用 replaceScene 方法): 1. 第2个场景的 scene 方法 2. 第2个场景的 init 方法 3. 第2个场景的 onEnter 方法 4. 转场 5 ...
随机推荐
- C# Attribute(特性)之---数据契约 [DataContract]
服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型. 一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送,如下所 ...
- js简单实现链式调用
链式调用实现原理:对象中的方法执行后返回对象自身即可以实现链式操作.说白了就是每一次调用方法返回的是同一个对象才可以链式调用. js简单实现链式调用demo Object.prototype.show ...
- XLSReadWrite控件简介
2015-10-22 23:57:55 原帖地址:http://www.cnblogs.com/dabiao/archive/2011/07/08/2100609.html XLSReadWrite ...
- VC++学习之进程和线程的区别
VC++学习之进程和线程的区别 一.进程 进程是表示资源分配的基本单位,又是调度运行的基本单位.例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格.内存空间.磁盘 ...
- git配置ssh
$ git config --global user.name "yourname"$ git config --global user.email "youremail ...
- halcon与C#混合编程
halcon源程序: dev_open_window(0, 0, 512, 512, 'black', WindowHandle)read_image (Image, 'C:/Users/BadGuy ...
- 每天一个小算法(4)----在O(1)时间删除指定结点
O(1)时间内删除结点的思路只能是复制该结点下一个结点的数据,然后删除该结点的下一个结点,来等效删除此结点. 需要注意的地方是删除头结点和尾结点的处理. #include <stdio.h> ...
- APM代码学习笔记2:编译过程
make编译 所有位置的Makefile 引用的都是/mk/apm.mk target.mk 设置CONFIG_HAL_BOARD 例如linux就是HAL_BOARD_LINUX environ.m ...
- pl sql 无法解析指定的连接标识符
使用PLSQL Developer时,“ORA-12154: TNS:无法解析指定的连接标识符”问题的一个解决办法< xmlnamespace prefix ="o" ...
- npm note
npm docs 设置镜像站 因为npmjs的官方网站,总会下载比较慢或打不开,所以通常需要设置一下镜像站来更好的安装npm库 npm install --registry http://regist ...