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;


  • 相关阅读:
    PAT乙级1014.福尔摩斯的约会 (20)(20 分)
    PAT乙级1013.数素数
    PAT乙级1012.数字分类 (20)(20 分)
    PAT乙级1011.A+B和C (15)(15 分)
    PAT乙级1025.反转链表 (25)
    PAT乙级1020.月饼(20)
    PAT乙级1015.德才论(25)
    PAT乙级1010.一元多项式求导(25)
    PAT乙级1009.说反话(20)
    PAT乙级1008.数组元素循环右移问题(20)
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3293615.html
Copyright © 2011-2022 走看看