亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Cocos2d-x學(xué)習(xí)入門之HelloWorld程序

 更新時(shí)間:2014年08月20日 12:04:09   投稿:shichen2014  
這篇文章主要介紹了Cocos2d-x學(xué)習(xí)入門之HelloWorld程序,是學(xué)習(xí)Cocos2d-x的入門程序,其重要性不言而喻,需要的朋友可以參考下

一、前言:

Cocos2d-x是目前非常流行的開源移動(dòng)2D游戲框架。本文HelloWorld示例程序中使用的Cocos2d-x版本是2.0,主要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的入門程序。

二、HelloWorld程序:

HelloWorld程序是很多編程語(yǔ)言的入門程序,對(duì)于程序員來(lái)說(shuō)非常重要。
打開本文項(xiàng)目后可以看到AppDelegate.h/.cpp和HelloWorldScene.h/.cpp四個(gè)文件,比一般初學(xué)編程看到的HelloWorld要稍顯復(fù)雜。

具體代碼如下:

#include "AppDelegate.h" 
#include "HelloWorldScene.h" 
USING_NS_CC; 
AppDelegate::AppDelegate() { 
} 
AppDelegate::~AppDelegate()  
{ 
} 
bool AppDelegate::applicationDidFinishLaunching() { 
  // 初始化CCDirector對(duì)象 
  CCDirector* pDirector = CCDirector::sharedDirector(); 
  // 初始化CCEGLView對(duì)象,CCEGLView是顯示窗口,負(fù)責(zé)窗口級(jí)別的功能管理和實(shí)現(xiàn),包括坐標(biāo)和縮放管理、畫圖工具、按鍵事件 
  CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); 
  // 將pEGLView傳遞給pDirector 
  pDirector->setOpenGLView(pEGLView); 
  // 打開狀態(tài)顯示,包括FPS等 
  pDirector->setDisplayStats(true); 
  // 設(shè)置FPS,每秒刷新多少幀畫面,默認(rèn)是1秒60幀,幀數(shù)越高畫面越流暢,但也越耗電 
  pDirector->setAnimationInterval(1.0 / 60); 
  // 創(chuàng)建一個(gè)HelloWorld場(chǎng)景,能夠自動(dòng)釋放 
  CCScene *pScene = HelloWorld::scene(); 
  // 運(yùn)行HelloWorld場(chǎng)景 
  pDirector->runWithScene(pScene); 
  return true; 
} 
// 來(lái)電或者應(yīng)用進(jìn)入手機(jī)后臺(tái)將調(diào)用此方法 
void AppDelegate::applicationDidEnterBackground() { 
  // 停止所有動(dòng)畫 
  CCDirector::sharedDirector()->stopAnimation(); 
  // 如果使用了SimpleAudioEngine(控制背景音樂(lè)等),在此處調(diào)用暫停 
  // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); 
} 
// 當(dāng)應(yīng)用從后臺(tái)恢復(fù)至前臺(tái)將調(diào)用此方法 
void AppDelegate::applicationWillEnterForeground() { 
  // 恢復(fù)所有動(dòng)畫 
  CCDirector::sharedDirector()->startAnimation(); 
  // 在此處調(diào)用SimpleAudioEngine的恢復(fù) 
  // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); 
} 

AppDelegate對(duì)Cocos2d-x引擎進(jìn)行了初始化,并對(duì)進(jìn)行一些全局性的設(shè)置。
但是在這個(gè)里面并沒(méi)有看到具體的界面實(shí)現(xiàn),因?yàn)榻缑鎸?shí)現(xiàn)都在HelloWorldScene中。

#include "HelloWorldScene.h" 
USING_NS_CC; 
CCScene* HelloWorld::scene() 
{ 
  // 創(chuàng)建一個(gè)Scene 
  CCScene *scene = CCScene::create(); 
   
  // 創(chuàng)建一個(gè)HelloWorld的圖層(HelloWorld繼承自CCLayer) 
  HelloWorld *layer = HelloWorld::create(); 
 
  // 將創(chuàng)建的HelloWorld圖層添加至之前創(chuàng)建的場(chǎng)景中 
  scene->addChild(layer); 
 
  // 返回創(chuàng)建的場(chǎng)景 
  return scene; 
} 
 
// on "init" you need to initialize your instance 
bool HelloWorld::init() 
{ 
  ///////////////////////////// 
  // 1. 調(diào)用父類的初始化,如果初始化失敗,則不會(huì)繼續(xù)往下執(zhí)行 
  if ( !CCLayer::init() ) 
  { 
    // 返回false表示初始化失敗 
    return false; 
  } 
  //獲取可顯示區(qū)域大小 
  CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); 
  //獲取可顯示區(qū)域坐標(biāo)起點(diǎn) 
  CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); 
  ///////////////////////////// 
  // 2. 添加一個(gè)可點(diǎn)擊的菜單按鈕,點(diǎn)擊后關(guān)閉程序 
  // 創(chuàng)建一個(gè)圖片菜單選項(xiàng) 
  CCMenuItemImage *pCloseItem = CCMenuItemImage::create(// 調(diào)用創(chuàng)建方法 
                    "CloseNormal.png",// 設(shè)置未點(diǎn)擊時(shí)菜單圖片 
                    "CloseSelected.png",// 設(shè)置點(diǎn)擊時(shí)候菜單圖片 
                    this,// ?這個(gè)參數(shù)是什么 
                    menu_selector(HelloWorld::menuCloseCallback));// 設(shè)置菜單點(diǎn)擊時(shí)間的回調(diào)監(jiān)聽(tīng) 
  // 設(shè)置菜單的位置坐標(biāo),pCloseItem->getContentSize()用來(lái)獲取菜單選項(xiàng)大小 
  pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 , 
                origin.y + pCloseItem->getContentSize().height/2)); 
  // 創(chuàng)建菜單(菜單選項(xiàng)需要添加到菜單里才能使用),create函數(shù)中可以添加多個(gè)菜單選項(xiàng),以NULL結(jié)束添加 
  CCMenu* pMenu = CCMenu::create(pCloseItem, NULL); 
  // 設(shè)置菜單的坐標(biāo)(CCPointZero是坐標(biāo)(0,0)) 
  pMenu->setPosition(CCPointZero); 
  // 將菜單添加至HelloWorld圖層中,1是菜單在HelloWorld圖層中Z軸位置,數(shù)值越大,顯示的層級(jí)越高,不易被遮擋 
  this->addChild(pMenu, 1); 
  ///////////////////////////// 
  // 3. 添加文字控件和背景圖片 
  // 創(chuàng)建一個(gè)文件控件,create函數(shù)中參數(shù)分別是“控件需要顯示的文字”,“控件文字字體”,“控件文字字號(hào)” 
  CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24); 
  // 設(shè)置文件控件位置(此公式計(jì)算的位置為屏幕中央) 
  pLabel->setPosition(ccp(origin.x + visibleSize.width/2, 
              origin.y + visibleSize.height - pLabel->getContentSize().height)); 
  // 將文字控件添加至HelloWorld圖層中 
  this->addChild(pLabel, 1); 
  // 創(chuàng)建一個(gè)精靈(后續(xù)將介紹精靈的具體用處,這里精靈是背景圖片的載體) 
  CCSprite* pSprite = CCSprite::create("HelloWorld.png"); 
 
  // 設(shè)置背景圖片位置(此公式計(jì)算的位置為屏幕中央) 
  pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); 
  // 將背景圖片添加至HelloWorld圖層中,并設(shè)置Z軸為0,置于菜單和文字之下 
  this->addChild(pSprite, 0); 
  // 返回true表示初始化成功 
  return true; 
} 
// 關(guān)閉按鈕的回調(diào)函數(shù),pSender傳遞的是調(diào)用了該函數(shù)的對(duì)象 
void HelloWorld::menuCloseCallback(CCObject* pSender) 
{ 
// 宏定義,判斷是否是WinRT或者WP8設(shè)備 
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) 
  // 彈出對(duì)話框,提示文字信息 
  CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert"); 
#else 
  // 調(diào)用CCDirector的end()函數(shù),結(jié)束游戲 
  CCDirector::sharedDirector()->end(); 
// 宏定義,判斷是否是IOS設(shè)備 
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) 
  // 直接調(diào)用exit(0)結(jié)束游戲 
  exit(0); 
#endif 
#endif 
} 

HelloWorldScene文件是整個(gè)HelloWorld工程的核心,從代碼中我們不難發(fā)現(xiàn),在Cocos2d-x的坐標(biāo)系計(jì)算中,默認(rèn)將屏幕左下角設(shè)置為坐標(biāo)原點(diǎn),向上方和右方遞增Y軸X軸。而設(shè)置控件位置的時(shí)候,是以控件的中心為錨點(diǎn),當(dāng)然,錨點(diǎn)是可以通過(guò)代碼改變的,這里我們需要調(diào)用setAnchorPoint()函數(shù)。

希望本文所述實(shí)例對(duì)于大家學(xué)習(xí)Cocos2d-x能起到一定的幫助作用。

相關(guān)文章

  • C++?Boost?MultiArray簡(jiǎn)化使用多維數(shù)組庫(kù)

    C++?Boost?MultiArray簡(jiǎn)化使用多維數(shù)組庫(kù)

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • C/C++使用Zlib實(shí)現(xiàn)文件的壓縮與解壓

    C/C++使用Zlib實(shí)現(xiàn)文件的壓縮與解壓

    zlib 是一個(gè)開源的數(shù)據(jù)壓縮庫(kù),旨在提供高效、輕量級(jí)的壓縮和解壓縮算法,本文將介紹如何使用 zlib 庫(kù)進(jìn)行數(shù)據(jù)的壓縮和解壓縮,以及如何保存和讀取壓縮后的文件,感興趣的可以了解下
    2023-11-11
  • C語(yǔ)言進(jìn)階之文件操作詳解

    C語(yǔ)言進(jìn)階之文件操作詳解

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言進(jìn)階之文件操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C語(yǔ)言實(shí)現(xiàn)掃雷游戲簡(jiǎn)易版

    C語(yǔ)言實(shí)現(xiàn)掃雷游戲簡(jiǎn)易版

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)掃雷游戲簡(jiǎn)易版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C語(yǔ)言動(dòng)態(tài)內(nèi)存管理介紹

    C語(yǔ)言動(dòng)態(tài)內(nèi)存管理介紹

    大家好,本篇文章主要講的是C語(yǔ)言動(dòng)態(tài)內(nèi)存管理介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • c++中#include <>與#include""的區(qū)別詳細(xì)解析

    c++中#include <>與#include""的區(qū)別詳細(xì)解析

    <>先去系統(tǒng)目錄中找頭文件,如果沒(méi)有在到當(dāng)前目錄下找。所以像標(biāo)準(zhǔn)的頭文件 stdio.h、stdlib.h等用這個(gè)方法
    2013-10-10
  • QT5?Thread線程的具體實(shí)現(xiàn)

    QT5?Thread線程的具體實(shí)現(xiàn)

    本文主要介紹了QT5?Thread線程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C語(yǔ)言 設(shè)計(jì)模式之訪問(wèn)者模式

    C語(yǔ)言 設(shè)計(jì)模式之訪問(wèn)者模式

    這篇文章主要介紹了C語(yǔ)言 設(shè)計(jì)模式之訪問(wèn)者模式的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C語(yǔ)言中 值傳遞和指針傳遞實(shí)例詳解

    C語(yǔ)言中 值傳遞和指針傳遞實(shí)例詳解

    這篇文章主要介紹了C語(yǔ)言中 值傳遞和指針傳遞實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • C/C++中的mem函數(shù)和strcopy函數(shù)的區(qū)別和應(yīng)用

    C/C++中的mem函數(shù)和strcopy函數(shù)的區(qū)別和應(yīng)用

    strcpy和memcpy都是標(biāo)準(zhǔn)C庫(kù)函數(shù),strcpy提供了字符串的復(fù)制而memcpy提供了一般內(nèi)存的復(fù)制。下面通過(guò)本文重點(diǎn)給大家介紹C/C++中的mem函數(shù)和strcopy函數(shù)的區(qū)別和應(yīng)用,非常不錯(cuò),感興趣的朋友一起看下吧
    2016-08-08

最新評(píng)論