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++ HttpServlet 高并发多线程 HTTP 服务器(转)
from:http://www.oschina.net/code/snippet_568966_43193 C/C++ 程序虽然执行效率高,但程序员在开发 WEB 应用时却因为没有好的 WEB 开 ...
- Spark源码学习1
转自:http://www.cnblogs.com/hseagle/p/3664933.html 一.基本概念(Basic Concepts) RDD - resillient distributed ...
- Cglib学习站点(转)
1.CGlib简单介绍,访问地址:http://www.blogjava.net/stone2083/archive/2008/03/16 /186615.html,从简单的示例到不同业务场景的变化, ...
- R与数据分析旧笔记(十二)分类 (支持向量机)
支持向量机(SVM) 支持向量机(SVM) 问题的提出:最优分离平面(决策边界) 优化目标 决策边界边缘距离最远 数学模型 问题转化为凸优化 拉格朗日乘子法--未知数太多 KKT变换和对偶公式 问题的 ...
- Mysql笔记之 -- replace()实现mysql 替换字符串
mysql 替换函数replace()实现mysql 替换字符串 mysql 替换字符串的实现方法: mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,不再需要自己写函数 ...
- 树莓派读取DHT11传感器的源代码
import wiringpi2 as gpio owpin=8 #第8脚为1-wire脚 def getval(owpin): tl=[] #存放每个数据位的时间 tb=[] #存放数据位 gpio ...
- Python数据分析扩展库
Anaconda和Python(x,y)都自带了下面的这些库. 1. NumPy 强大的ndarray和ufunc函数. import numpy as np xArray = np.ones((3, ...
- .net mvc笔记4_依赖注入
一.Building Loosely Coupled Components MVC模式最重要的特点就是关注点分离.我们希望应用中的组件能尽可能的独立,相互之间即使有依赖也要在我们的控制之下. 在理想情 ...
- 安装AppManager
http://www.searchvirtual.com.cn/showcontent_66884.htm
- Struts2 一张图片引发的bug
今天如常的打开项目开放.写了一会保存测试.在登录时出了个错误当不影响正常使用.丫的昨天还好好的.行下手上的工作 开始找bug 错误核心代码如下: 10:34:46,442 WARN OgnlValu ...