zoukankan      html  css  js  c++  java
  • 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;


  • 相关阅读:
    Topcoder Arena插件配置和训练指南
    [POJ] 3277 .City Horizon(离散+线段树)
    C++ STL算法系列 unique
    C. Polycarpus' Dice
    Codeforces Round #298 (Div. 2) B. Covered Path
    Matlab 2012a 下载和安装教程
    hdu 5203
    ....
    乐观锁vs悲观锁, 集群vs分布式 , 微服务, 幂等性
    正向代理 vs 反向代理
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3293615.html
Copyright © 2011-2022 走看看