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 ...
随机推荐
- 块对象block小结(2)
MRC环境下 //// main.m// blcok//// Created by ios on 16/4/6.// Copyright © 2016年 ios. All rights res ...
- JAVA编译中拒绝访问的问题及解决方案
在java编译时出现,可以将C盘内的文件转移到其他盘,此问题可能是权限不足不能够读取C盘文件造成的. 文件名与类名要一致,包括大小写,也是要一致!
- Android 开发之Matrix图片处理类的使用
在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵,他对图片的处理分为四个基本类型: 1.Translate————平移变换 2.Scale————缩放变换 ...
- python pdb调试以及sublime3快捷键设置
python pdb调试以及sublime3快捷键设置 pdb调试 如果对gdb比较熟悉的话,pdb就很容易上手.以一个demo快速了解常用的调试命令. def test(a): while True ...
- libmemcached安装及简单例子
libmemcached安装及简单例子 1.下载安装libmemcached $ wget http://launchpad.net/libmemcached/1.0/0.44/+download/ ...
- 视频主观质量评价工具:MSU Perceptual Video Quality tool
MSU Perceptual Video Quality tool是莫斯科国立大学(Moscow State University)的Graphics and Media Lab制作的一款视频主观评价 ...
- Android适配器Adapter学习
在开发中我们需要绑定一些数据展现到桌面上,这是就需要AdapterView.AdapterView是ViewGroup的子类,它决定了怎么展现视图通过Adapter来绑定特殊的数据类型. Adapte ...
- Javascript声明变量类型
声明变量类型 当您声明新变量时,可以使用关键词 "new" 来声明其类型: var carname=new String; var x= new Number; var y= ne ...
- 新浪微博 2.4sdk 一闪而过
解决方法,保持 ios应用中的 build id和 开放平台中填写的一致
- 对Devexpress ASP.NET组件的一些看法
使用.net开发的应该都熟悉DevExpress这套组件,强大的功能,显著提高开发效率和提升用户体验. 不过好像大都用winform, 说起用asp.net组件来开发webform,很多人开口就说慢, ...