閱讀714 返回首頁    go 阿裏雲 go 技術社區[雲棲]


第一個Hello world(1)

把新創建的空項目中的HelloworldScene類刪除掉,自己寫一個.

一步步學習,不能投機取巧,先從最簡單的hello world開始!

#ifndef __HelloCpp__LoadingLayer__
#define __HelloCpp__LoadingLayer__

#include "cocos2d.h"

/** @brief 遊戲啟動層類
 *
 *  遊戲啟動會創建此類對象,通過工廠方法創建一個場景,並將自己(層)加入到場景中
 */
class LoadingLayer : public cocos2d::CCLayer
{
public:
    // 初始化函數
    virtual bool init();
    
    // 工廠方法,生成場景對象
    static cocos2d::CCScene * scene();
    
    // 關閉菜單的回調
    void menuCloseCallback(CCObject *pSender);
    
    // 靜態創建類對象
    static LoadingLayer * create();
};

#endif /* defined(__HelloCpp__LoadingLayer__) */

#include "LoadingLayer.h"

USING_NS_CC;

CCScene * LoadingLayer::scene()
{
    // 使用工廠方法生成scene
    CCScene *pScene = CCScene::create();
    
    // 使用工廠方法生成啟動層對象
    LoadingLayer *pLayer = LoadingLayer::create();
    
    // 把啟動層對象加入到場景中
    pScene->addChild(pLayer);
    
    return pScene;
}

bool LoadingLayer::init()
{
    if (!CCLayer::init()) {
        return false;
    }
    
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    
    // 添加圖片菜單項
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create("CloseNormal.png",
                                                          "CloseSelected.png",
                                                          this,
                                                          menu_selector(LoadingLayer::menuCloseCallback));
    // 設置菜單項在屏幕的位置
    pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width / 2,
                                origin.y + pCloseItem->getContentSize().height / 2));
    
    // 創建菜單並添加到層中
    CCMenu *pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition(CCPointZero);
    this->addChild(pMenu, 1);
    
    // 創建標題
    CCLabelTTF *pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
    pLabel->setPosition(ccp(origin.x + visibleSize.width / 2,
                            origin.y + visibleSize.height / 2));
    this->addChild(pLabel, 1);
    
    // 添加精靈
    CCSprite *pSprite = CCSprite::create("HelloWorld.png");
    pSprite->setPosition(ccp(visibleSize.width / 2 + origin.x,
                             visibleSize.height / 2 + origin.y));
    this->addChild(pSprite, 0);
    
    return true;
}

LoadingLayer * LoadingLayer::create()
{
    LoadingLayer *pRet = new LoadingLayer();
    if (pRet && pRet->init()) {
        pRet->autorelease();
        return pRet;
    }
    
    delete pRet;
    pRet = NULL;
    
    return NULL;
}

void LoadingLayer::menuCloseCallback(cocos2d::CCObject *pSender)
{
    CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
    return;
}


最後更新:2017-04-03 12:56:06

  上一篇:go 從java.lang.Runtime看單例懶漢餓漢模式的選擇
  下一篇:go JSB內存管理