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;


  • 相关阅读:
    如何基于GOCW,创建一个实时视频程序
    对OpenCV中“旋转”的思考和实验
    为基于OpenCV的图像处理程序编写界面—关于QTMFCCSharp的选择以及GOCW的介绍
    《学习OpenCV3》第6章课后习题
    《学习OpenCV3》第14章课后习题
    如何识别出轮廓准确的长和宽
    answerOpenCV轮廓类问题解析
    尝试解决cifar10问题
    在训练的过程中降低学习率
    kaggle竞赛_mnist_10%
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3293615.html
Copyright © 2011-2022 走看看