中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

三: cocos2d-x代碼分析

發布時間:2020-07-08 22:01:54 來源:網絡 閱讀:502 作者:lambdaX 欄目:游戲開發

目錄結構:

    


Box2D
 物理引擎Box2D的相關文件
Chipmunk物理引擎Chipmunk的相關文件
cocos2dxcocos2d-x引擎的核心,存放引擎的大部分源文件
CocosDenshion音頻模塊相關源文件
Debug.win32 在Windows上的調試輸出目錄
Doxygen生成doxygen項目文檔時需要的配置文件
HelloWorldHelloWorld的源代碼
Hellolualua的示例代碼
Lua lua腳本支持的源碼
JsJs腳本支持的源碼
Licences許可文件的目錄
Template包括編譯Ios和Android平臺開發時的配置文件
testjs
cocos2d-x引擎js語言的API示例代碼
testscocos2d-x引擎的所有API示例代碼
Tools包括“Tolua的配置文件”和“Xcode4的模版生成工具”





1.類AppDelegate   //控制游戲生命周期


    類AppDelegate繼承了CCApplication,定義了三個方法:

        virtualbool applicationDidFinishLaunching();         //響應窗口啟動完成后的工作


        virtualvoid applicationDidEnterBackground();         //響應窗口進入后臺的工作


        virtualvoid applicationWillEnterForeground();          //響應窗口從后臺恢復的工作


   I  啟動時初始化的工作

  1. bool AppDelegate::applicationDidFinishLaunching()

  2. {

  3.     // initialize Director


  4.     CCDirector* pDirector =CCDirector::sharedDirector();  // 場景管理器


  5.     CCEGLView* pEGLView =CCEGLView::sharedOpenGLView();  //創建視口 


  6.     pDirector->setOpenGLView(pEGLView);          //設置OpenGL視口 


  7.     // Set the design resolution


  8.    pEGLView->setDesignResolutionSize(designResolutionSize.width,designResolutionSize.height, kResolutionNoBorder);     //設置分辨率大小 


  9.     CCSize frameSize =pEGLView->getFrameSize();    


  10.     vector<string> searchPath;           //資源路徑 


  11.  //在不同的平臺下加載不同的資源


  12.     if (frameSize.height> mediumResource.size.height)

  13.     {

  14.        searchPath.push_back(largeResource.directory); 


  15.        pDirector->setContentScaleFactor(MIN(largeResource.size.height/designResolutionSize.height,largeResource.size.width/designResolutionSize.width));

  16.     }


  17.     // if the frame'sheight is larger than the height of small resource size, select mediumresource.


  18.     else  if (frameSize.height > smallResource.size.height)

  19.     {

  20.        searchPath.push_back(mediumResource.directory);        


  21.         pDirector->setContentScaleFactor(MIN(mediumResource.size.height/designResolutionSize.height,mediumResource.size.width/designResolutionSize.width));

  22.     }

  23.     // if the frame's height is smaller than the height of medium resource size, select smallresource.


  24.     else

  25.     {

  26.        searchPath.push_back(smallResource.directory);    

  27.        pDirector->setContentScaleFactor(MIN( smallResource.size.height/designResolutionSize.height , smallResource.size.width/designResolutionSize.width ) );

  28.     }  


  29.   //設置資源文件路徑


  30.     CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath);   


  31.     // turn ondisplay FPS


  32.     pDirector->setDisplayStats(true);    //開啟顯示FPS 


  33.     // set FPS. the default value is 1.0/60 if you don't call this


  34.     pDirector->setAnimationInterval(1.0 /60);   // 設置幀速率 ,最好不要低于30幀


  35.     // create a scene. it's an autorelease object


  36.     CCScene *pScene = HelloWorld::scene();      //調用靜態方法創建一個場景,HelloWorld中會負責場景的實現  


  37.     pDirector->runWithScene(pScene);      //導演調用,運行HelloWorld中的場景。 


  38.     return  true;

  39. }

II  暫停動作

  1. // This function will be called when the app is inactive. When comes a phone call,it's be invoked too


  2. void AppDelegate::applicationDidEnterBackground()

  3. {

  4.     CCDirector::sharedDirector()->stopAnimation();     //暫停活動


  5.     // if you use SimpleAudioEngine, it must be pause

  6.     // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();   //暫停背景音樂

  7. }


III  恢復動作

  1. // this function will be called when the app is active again


  2. void AppDelegate::applicationWillEnterForeground()

  3. {

  4.     CCDirector::sharedDirector()->startAnimation();   // 恢復活動


  5.     // if you use SimpleAudioEngine, it must resume here

  6.     // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();   // 恢復背景音樂

  7. }



2.HelloWorld


  1. CCScene*HelloWorld::scene()

  2. {

  3.     // 'scene' is an autorelease object


  4.     CCScene *scene = CCScene::create();    //創建場景


  5.     // 'layer' is an autorelease object


  6.     HelloWorld *layer = HelloWorld::create();    //創建圖層


  7.     // add layer as achild to scene


  8.     scene->addChild(layer);                  //添加圖層作為節點 


  9.     // return the scene


  10.     return scene;

  11. }

  12. bool HelloWorld::init()

  13. {

  14.     // 1. super initfirst


  15.     if (!CCLayer::init() )     //創建圖層

  16.     {

  17.         return  false;

  18.     }    


  19.     CCSize visibleSize =CCDirector::sharedDirector()->getVisibleSize();            //獲取大小


  20.     CCPoint origin =CCDirector::sharedDirector()->getVisibleOrigin();           //獲取原點,原點(origin.x , origin.y)在左下角


  21.     CCMenuItemImage *pCloseItem =CCMenuItemImage::create(  "CloseNormal.png,  "CloseSelected.png",   this,


  22.              menu_selector( HelloWorld::menuCloseCallback ) );      //創建關閉按鈕 ,在這里的圖片路徑如果不是在/Resources 目錄下,則圖片不能使用。  如果要在Resources目下放置文件夾,則需要在字符串中加入路徑名稱,如”/raster-32x32/ 32x32.png“


  23. //設置按鈕位置,可以看出 Cocos2d-x的坐標原點是左下角


  24. pCloseItem->setPosition(ccp(origin.x+ visibleSize.width - pCloseItem->getContentSize().width/2 ,   


  25.                                 origin.y +pCloseItem->getContentSize().height/2));  

  26. //   visibleSize.width                                            屏幕的寬度

  27. //   pCloseItem->getContentSize().width/2     是圖片寬度的1/2

  28. //   pCloseItem->getContentSize().height/2    是圖片高度的1/2



  29. //      pCloseItem->setPosition(ccp(origin.x ,   origin.y ) );  // pCloseItem的坐標設置是以默認錨點為坐標中心,即錨點在(0,0),此時按鈕只能顯示1/4


  30.   //創建菜單,將關閉按鈕加入到菜單項    


  31.     CCMenu* pMenu = CCMenu::create(pCloseItem,NULL);


  32.     pMenu->setPosition(CCPointZero);    //  設置菜單的位置


  33.     this->addChild(pMenu,1);                  //  將菜單加入到HelloWorld圖層中


  34.     //創建 HelloWorld 文本


  35.     CCLabelTTF* pLabel = CCLabelTTF::create("Hello World","Arial",TITLE_FONT_SIZE);   


  36.     // position thelabel on the center of the screen


  37.     pLabel->setPosition(ccp(origin.x +visibleSize.width/2,


  38.                             origin.y +visibleSize.height - pLabel->getContentSize().height));  //設置文本(Label)的位置 ,坐標是字符串中心的坐標,并不是最開始的位置


  39.     // add the labelas a child to this layer


  40.     this->addChild(pLabel,1);   //  將文本(Label)加入到HelloWorld圖層中


  41.    //創建精靈圖片 


  42.     CCSprite* pSprite = CCSprite::create("HelloWorld.png"); 


  43.     // position thesprite on the center of the screen


  44.    pSprite->setPosition(ccp(visibleSize.width/2 + origin.x,visibleSize.height/2 + origin.y));    // 設置圖片精靈的位置


  45.     // add the spriteas a child to this layer 


  46.     this->addChild(pSprite,0);     //  將圖片精靈加入到HelloWorld圖層中   (第二個參數是Z軸坐標:0在底層,1在上層  。  Z軸坐標系參考笛卡爾右手坐標系(正方向:x軸向右,y軸向上,z軸向外)

  47. //設置為相同的Z軸坐標時,按加載順序顯示,先加載的先顯示,后加載的后顯示


  48.     return  true;

  49.   }


IIII  點擊按鈕結束的回調函數


  1. void HelloWorld::menuCloseCallback(CCObject* pSender)

  2. {

  3. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)

  4. CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");

  5. #else

  6.     CCDirector::sharedDirector()->end();

  7. #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

  8.     exit(0);

  9. #endif






向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴义市| 隆昌县| 津南区| 苍溪县| 巴马| 隆安县| 常山县| 扎赉特旗| 丹棱县| 绥化市| 保康县| 隆子县| 文安县| 翁牛特旗| 思南县| 喀什市| 锡林郭勒盟| 德钦县| 河西区| 乌拉特前旗| 章丘市| 监利县| 安溪县| 响水县| 建瓯市| 三都| 宁南县| 洞口县| 陈巴尔虎旗| 敖汉旗| 乐昌市| 洮南市| 高平市| 大方县| 延庆县| 栾川县| 广河县| 周宁县| 西峡县| 昆明市| 碌曲县|