• cocos2dx(2)代码基本结构


    入口类,cocos2d::CCApplication类统一了各平台的差异


    AppDelegate.h

    #ifndef __APP_DELEGATE_H__
    #define __APP_DELEGATE_H__
    
    #include "cocos2d.h"
    
    class  AppDelegate : private cocos2d::CCApplication
    {
    public:
        AppDelegate();
        virtual ~AppDelegate();
        virtual bool applicationDidFinishLaunching();//窗口启动完成,加载游戏,开启音乐等
        virtual void applicationDidEnterBackground();//进入后台,游戏,音乐暂停等
        virtual void applicationWillEnterForeground();//进入前台,游戏,音乐恢复
    };
    
    #endif  // __APP_DELEGATE_H__


    AppDelegate.cpp

    bool AppDelegate::applicationDidFinishLaunching()
    {
        
        CCDirector *pDirector = CCDirector::sharedDirector();//初始化导演
        pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());//绑定opengl窗口
    
        pDirector->setDisplayStats(true);//是否显示fps
        pDirector->setAnimationInterval(1.0 / 60);//fps默认为1.0 / 60
    
        CCScene *pScene = HelloWorld::scene();//初始化场景
        pDirector->runWithScene(pScene);//场景run
        return true;
    }

    HelloWorldScene.h

    #ifndef __HELLOWORLD_SCENE_H__
    #define __HELLOWORLD_SCENE_H__
    
    #include "cocos2d.h"
    
    class HelloWorld : public cocos2d::CCLayer
    {
    public:
       
        virtual bool init();  
        static cocos2d::CCScene* scene();
        void menuCloseCallback(CCObject* pSender);//菜单关闭事件处理
        void ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);//按键处理
        CREATE_FUNC(HelloWorld);
    };
    #endif  // __HELLOWORLD_SCENE_H__


    HelloWorldScene.cpp

    #include "HelloWorldScene.h"
    
    using namespace cocos2d;
    
    CCScene* HelloWorld::scene()
    {
        CCScene * scene = NULL;
        do 
        {
            scene = CCScene::create();
            CC_BREAK_IF(! scene);
    
            HelloWorld *layer = HelloWorld::create();
            CC_BREAK_IF(! layer);
    
            scene->addChild(layer);
        } while (0);
        return scene;
    }
    
    
    bool HelloWorld::init()
    {
        bool bRet = false;
        do 
        {
            CC_BREAK_IF(! CCLayer::init());
    
            CCMenuItemImage *pCloseItem = CCMenuItemImage::create(//定义推出菜单
                "CloseNormal.png",
                "CloseSelected.png",
                this,
                menu_selector(HelloWorld::menuCloseCallback));
            CC_BREAK_IF(! pCloseItem);
    
            pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));
    
            CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
            pMenu->setPosition(CCPointZero);
            CC_BREAK_IF(! pMenu);
            this->addChild(pMenu, 1);
    
    
            CCLabelTTF* pLabel = CCLabelTTF::create("Hello World111", "Arial", 24);//定义label
            CC_BREAK_IF(! pLabel);
            CCSize size = CCDirector::sharedDirector()->getWinSize();
            pLabel->setPosition(ccp(size.width / 2, size.height - 50));
            this->addChild(pLabel, 1);
    
            CCSprite* pSprite = CCSprite::create("HelloWorld.png");
            CC_BREAK_IF(! pSprite);
            pSprite->setPosition(ccp(size.width/2, size.height/2));
            this->addChild(pSprite, 0);
    	this->setTouchEnabled(true);//设置监听
            bRet = true;
        } while (0);
    
        return bRet;
    }
    
    void HelloWorld::menuCloseCallback(CCObject* pSender)
    {
        CCDirector::sharedDirector()->end();
    }


  • 相关阅读:
    9
    8
    7
    6
    5
    第四周
    作业14-数据库
    作业13-网络
    作业12-流与文件
    作业11-多线程
  • 原文地址:https://www.cnblogs.com/nafio/p/9137739.html
Copyright © 2020-2023  润新知