顯示具有 程式設計-Cocos2dx日記 標籤的文章。 顯示所有文章
顯示具有 程式設計-Cocos2dx日記 標籤的文章。 顯示所有文章

2014年12月21日 星期日

[Android開發] Cocos2d-x 檔案架構 (1)


 
檔案結構

打開專案,可分幾個主要資料夾

Classes : 置放主要的遊戲程式碼
Resource : 置放遊戲所需資源,如圖片,音效等等
cocos2d : 函式庫

proj.win32 : Windows架構的建置資料 (啟動c++編輯的xxx.sln檔案也放置於此)
proj.android : Android架構的
proj.ios_mac : IOS架構
proj.linux : Linux架構
proj.wp8-xaml : WindowsPhone架構




















主要檔案

打開Class資料夾,有幾個預設的檔案

AppDelegate.h : 宣告函式
AppDelegate.cpp : 入口函式

HelloWorldScene.h : 宣告函式
HelloWorldScene.cpp :  預設的場景,(包含一張圖片跟關閉按鈕)






AppDelegate.h

//AppDelegate.h 分析------- 

#ifndef _APP_DELEGATE_H_   //如果沒定義
#define _APP_DELEGATE_H_   //則定義
#include "cocos2d.h"   //載入cocos2d.h

class AppDelegate : private cocos2d::Application  //繼承入口函式
{
public:
AppDelegate();
virtual ~AppDelegate();

virtual bool applicationDidFinishLaunching();   //遊戲啟動後的工作 (入口)
virtual void applicationDidEnterBackground();   //待機狀態時調用
virtual void applicationWillEnterForeground();     //從待機狀態恢復時調用};

#endif // _APP_DELEGATE_H_    //結束定義

//AppDelegate.h 分析-------








AppDelegate.cpp

//AppDelegate.cpp 分析-------

 #include "AppDelegate.h"
#include "HelloWorldScene.h"

USING_NS_CC;
AppDelegate::AppDelegate() { }
AppDelegate::~AppDelegate() { }
bool AppDelegate::applicationDidFinishLaunching() {

    //初始化導演
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLView::create("My Game");
        director->setOpenGLView(glview);
    }

    director->setDisplayStats(true);   //開啟顯示 FPS
    director->setAnimationInterval(1.0 / 60);   //設定FPS. 預設為 1.0/60 每秒60格

    auto scene = HelloWorld::createScene();  //建立 HelloWorld場景. 它是 autorelease 物件

    director->runWithScene(scene);     //執行場景

    return true;
}


void AppDelegate::applicationDidEnterBackground() {
    Director::getInstance()->stopAnimation();

    // if you use SimpleAudioEngine, it must be pause
    // SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
    Director::getInstance()->startAnimation();

    // if you use SimpleAudioEngine, it must resume here
    // SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}



//AppDelegate.cpp 分析-------








主要類別 

CCNode 為主要物件類別,又包含了

CCDirector (導演) : 一個遊戲只能有一個導演,控制整個遊戲流程
CCScene (場景) : 為主要的大分類,如選單場景,遊戲內容場景,可包含多個圖層及角色
CCLayer (圖層) : 遊戲場景可分很多層,如背景層,角色層,NPC層,物件層,UI層
CCSprite (角色) : 可以是主角,電腦角色,物件
CCMenu (選單) : 遊戲內的介面選單,可以用cocos studio 輔助建置








2014年12月17日 星期三

[Android開發] Cocos2d-x 開發流程 (0)



1.生成Cocos2d-x專案 (建置一次即可)

  可使用 Cocos2dx_CreateProject.bat 生成  (註1)

  或進命令提示字元 D:\Android\cocos2d-x-3.2\tools\cocos2d-console\bin
  執行 cocos new Game01 -p com.hi.test -l cpp -d D:\Android\project

2.生成 C++ 專案項目 (建置C++開發環境 主要製作遊戲的地方) (建置一次即可)

  進專案的 proj.win32 資料夾
  執行 xxx.sln

  載入完後 對方案按右鍵 建置方案 (F7)

  (完成後即可開始開發遊戲或即時模擬測試(F5) )


3.生成 Android專案項目 (將專案建置到至 Eclipse 來輸出 apk執行檔)  (建置一次即可)

  進專案的 proj.android 資料夾
  執行 build_native.py



4.進Eplicse 匯入 proj.android 的專案 (匯入一次即可)

5.會缺失 org.cocos2dx.lib  (引用一次即可)

  對專案按右鍵,Build Path ->Link Source...
  新增設定好的引用變數 src_link

  (或是到 D:\Android\cocos2d-x-3.2\cocos\platform\android\java\src
  複製整個src到 \project\Game01\proj.android\src)

6.開啟 Android Virtual Device Manager 模擬裝置或插入手機

7.對專案按右鍵 執行 Run as -> Android Application


8.之後作業都是在proj.win32 開啟xxx.sln
      (直接用C++編輯 直接用visual studio的模擬器模擬(F5) )

  需要用Android測試時再開啟Eclipse 直接run建置好的專案
     (專案已跟所有修改好的檔案自動作連結)



9.D:\Android\cocos2d-x-3.2\build 的 cocos2d-win32.vc2012.sln
    裡面的項目cpp-tests 就包含所有功能展示,可以參考裡面的程式碼實作





 註1:
Cocos2dx_CreateProject.bat
新建一個純文字txt檔案,打完內容改為.bat執行檔
放於: D:\Android\project
之後直接執行 即可新建專案

內容:


@echo off
echo =============Cocos2D-x新建項目==============
set /p name=輸入項目名稱:

echo 項目名稱: %name%

echo 正在新建項目...

set pack=com.marco.

cocos new %name% -p %pack%%name% -l cpp

echo 新建完成.
pause





prettyPrint();