什麼程序都是從HelloWorld先開始。一樣Cocos2d-x咱們先從HelloWorld進行下手、下面是HelloWorld的運行完成圖:架構
創建好的Cocos遊戲項目中會有兩個比較經常使用接觸的文件夾。分別爲Classes與resource。Classes存取代碼文件,resource存取資源文件,下面爲完整的項目架構:app
咱們先來看下最基本的AppDelegate.cpp類函數
1 #include "AppDelegate.h" 2 #include "HelloWorldScene.h" 3 4 5 //命名空間 6 USING_NS_CC; 7 8 9 //構造函數 10 AppDelegate::AppDelegate() { 11 12 } 13 14 15 //析構函數 16 AppDelegate::~AppDelegate() 17 { 18 } 19 20 21 //程序啓動完成後會進入的函數 22 bool AppDelegate::applicationDidFinishLaunching() { 23 24 //初始化導演 25 auto director = Director::getInstance(); 26 27 //得到OpenGL視圖 28 auto glview = director->getOpenGLView(); 29 30 //若是沒有獲取OpenGL視圖 31 if(!glview) 32 { 33 //建立OpenGL視圖 34 glview = GLView::create("My Game"); 35 36 //設置OpenGL視圖 37 director->setOpenGLView(glview); 38 } 39 40 //設置是否顯示調試信息 41 director->setDisplayStats(true); 42 43 //設置幀率 44 director->setAnimationInterval(1.0 / 60); 45 46 //調用場景 47 auto scene = HelloWorld::createScene(); 48 49 //執行場景 50 director->runWithScene(scene); 51 52 return true; 53 } 54 55 56 //當程序進入後臺後調用的函數(當在玩遊戲時突然別人打來電話時,程序進入後臺) 57 void AppDelegate::applicationDidEnterBackground() { 58 59 //中止播放動畫 60 Director::getInstance()->stopAnimation(); 61 62 //暫停播放背景音樂 63 //SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); 64 } 65 66 67 //當程序從新被激活的時候調用的函數(聲音從新響起) 68 void AppDelegate::applicationWillEnterForeground() { 69 70 //播放動畫 71 Director::getInstance()->startAnimation(); 72 73 //繼續播放背景音樂 74 //SimpleAudioEngine::getInstance()->resumeBackgroundMusic(); 75 } 76 77 78 HelloWorld.h文件 79 80 #ifndef __HELLOWORLD_SCENE_H__ 81 #define __HELLOWORLD_SCENE_H__ 82 83 #include "cocos2d.h" 84 85 //HelloWorld類繼承自Layer類 86 class HelloWorld : public cocos2d::Layer 87 { 88 public: 89 //建立場景 90 static cocos2d::Scene* createScene(); 91 92 //初始化層 93 virtual bool init(); 94 95 //菜單響應函數 96 void menuCloseCallback(cocos2d::Ref* pSender); 97 98 //用於建立:場景、菜單、層等東西 99 CREATE_FUNC(HelloWorld); 100 }; 101 102 #endif
一、建立場景學習
二、建立層字體
三、將層加到場景上動畫
四、返回場景this
1 #include "HelloWorldScene.h" 2 3 //命名空間 4 USING_NS_CC; 5 6 //建立場景 7 Scene* HelloWorld::createScene() 8 { 9 //建立場景 10 auto scene = Scene::create(); 11 12 //建立層 13 auto layer = HelloWorld::create(); 14 15 //將層添加到場景中 16 scene->addChild(layer); 17 18 //返回場景 19 return scene; 20 } 21 22 //初始化層 23 bool HelloWorld::init() 24 { 25 //初始化父類的Layer 26 if(!Layer::init()) 27 { 28 return false; 29 } 30 31 //得到窗口的大小 32 Size visibleSize = Director::getInstance()->getVisibleSize(); 33 34 //得到座標原點的座標 35 Vec2 origin = Director::getInstance()->getVisibleOrigin(); 36 37 //用圖片建立菜單項 38 //第一個參數:正常狀態下的圖片 39 //第二個參數:被選中時的圖片 40 //第三個參數:響應函數 41 auto closeItem = MenuItemImage::create( 42 "CloseNormal.png", 43 "CloseSelected.png", 44 CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); 45 46 //設置菜單項的位置 47 closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , 48 origin.y + closeItem->getContentSize().height/2)); 49 50 //建立菜單 51 auto menu = Menu::create(closeItem, NULL); 52 53 //設置菜單的座標原點爲左下角(菜單中默認的座標原點在窗口的中央) 54 menu->setPosition(Vec2::ZERO); 55 56 //將菜單項添加到菜單中 57 this->addChild(menu, 1); 58 59 //建立一個標籤 60 //第一個參數:標籤中的內容 61 //第二個參數:字體 62 //第三個參數:字體大小 63 auto label = LabelTTF::create("Hello World", "Arial", 24); 64 65 //設置標籤的位置 66 label->setPosition(Vec2(origin.x + visibleSize.width/2, 67 origin.y + visibleSize.height - label->getContentSize().height)); 68 69 //設置標籤的位置 70 this->addChild(label, 1); 71 72 //建立一個精靈 73 auto sprite = Sprite::create("HelloWorld.png"); 74 75 //設置精靈的位置 76 sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); 77 78 //將精靈添加到層中 79 this->addChild(sprite, 0); 80 81 return true; 82 } 83 84 //菜單響應函數 85 void HelloWorld::menuCloseCallback(Ref* pSender) 86 { 87 #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) 88 MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert"); 89 return; 90 #endif 91 92 //結束場景 93 Director::getInstance()->end(); 94 95 #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) 96 exit(0); 97 #endif 98 }
HelloWorldScene.cpp中的 HelloWorld::init(),實現了初始化:spa
一、初始化父類的Layer調試
二、獲得窗口的大小code
三、獲得窗口的座標
四、建立菜單項
五、設置菜單項的位置
六、設置菜單的位置
七、將菜單加到層中
八、建立標籤
九、設置標籤的位置
十、將標籤加到層上
十一、建立精靈
十二、設置精靈的位置
1三、將精靈加到層上
1 #include "main.h" 2 #include "AppDelegate.h" 3 #include "cocos2d.h" 4 5 //命名空間 6 USING_NS_CC; 7 8 //Cocos2d-X的主函數(至關於C/C++中的main函數) 9 int APIENTRY _tWinMain(HINSTANCE hInstance, 10 HINSTANCE hPrevInstance, 11 LPTSTR lpCmdLine, 12 int nCmdShow) 13 { 14 //表示lpCmdLine、nCmdShow是兩個沒用的參數 15 UNREFERENCED_PARAMETER(hPrevInstance); 16 UNREFERENCED_PARAMETER(lpCmdLine); 17 18 //定義一個app對象 19 AppDelegate app; 20 21 //執行app對象的run函數。進入幀循環 22 return Application::getInstance()->run(); 23 }
main.cpp中的代碼只是實現了下面的操做
定義一個App對象->執行App對象進入幀循環
一個遊戲程序就這樣執行起來,應運而生,是否是感受特別的神奇。ok關於helloworld的解析就分享至此。下一章進入菜單篇的學習