W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我創(chuàng)建一個(gè)名為HelloCrossApp的工程,那么在引擎的根目錄的projects文件夾下,將會(huì)出現(xiàn)一個(gè)名為HelloCrossApp的工程目錄。我們打開這個(gè)目錄可見下圖的的結(jié)構(gòu):
HelloCrossApp的工程目錄結(jié)構(gòu) | |
Classes | 存放我們編寫的C++代碼 |
proj.android | android平臺(tái)工程配置 |
proj.ios | ios平臺(tái)工程配置(需要在MacOS下使用xode) |
proj.mac | mac平臺(tái)工程配置(需要在MacOS下使用xode) |
proj.win32 | win32平臺(tái)工程配置(用于在win下開發(fā),推薦vs2013) |
Resources | 項(xiàng)目的資源目錄(存放:圖片、音效、字體等) |
大家打開各自平臺(tái)使用的工程配置,我以win下vs2013為例子截圖
工程配置結(jié)構(gòu) | |
HelloCrossApp | 我們自己的項(xiàng)目 |
libCocosDenshion | 聲音庫 |
libCrossApp | CrossApp引擎庫 |
libExtensions | 使用的第三方的庫(json、sqlit3、network、websockets等) |
打開HelloCrossApp下的Classes目錄,看到如下結(jié)構(gòu):
Classes目錄結(jié)構(gòu) | |
AppDelegate | 項(xiàng)目入口 |
FirstViewController | 項(xiàng)目的CAViewController |
RootWindow | 項(xiàng)目啟動(dòng)的CAWindow |
我在這里引用API給出的CAWindow和CAViewController解釋
#ifndef _APP_DELEGATE_H_
#define _APP_DELEGATE_H_
#include "CrossApp.h"
/**
@brief The CrossApp Application.
The reason for implement as private inheritance is to hide some interface call by CAApplication.
*/
class AppDelegate : private CrossApp::CCApplication
{
public:
AppDelegate();
virtual ~AppDelegate();
/**
@brief Implement CAApplication and CCScene init code here.
@return true Initialize success, app continue.
@return false Initialize failed, app terminate.
*/
/*
這個(gè)函數(shù)用于實(shí)現(xiàn)CAApplication和CAWindow(CCScene應(yīng)該為注釋的錯(cuò)誤,以后版本會(huì)修正)的初始化
如果返回true,初始化成功,程序正常運(yùn)行
如果返回false,初始化失敗,程序終止運(yùn)行
*/
virtual bool applicationDidFinishLaunching();
/*
@brief The function be called when the application enter background
@param the pointer of the application
*/
/*
當(dāng)程序進(jìn)入后臺(tái)運(yùn)行時(shí),此函數(shù)會(huì)被調(diào)用(例如,電話)
*/
virtual void applicationDidEnterBackground();
/*
@brief The function be called when the application enter foreground
@param the pointer of the application
*/
/*
當(dāng)程序從后臺(tái)切回被激活時(shí)調(diào)用此函數(shù)
*/
virtual void applicationWillEnterForeground();
};
#endif // _APP_DELEGATE_H_
我們?cè)賮砜纯碅pplication.cpp里又都做了什么
#include "AppDelegate.h"
#include "RootWindow.h"
USING_NS_CC;
AppDelegate::AppDelegate()
{
}
AppDelegate::~AppDelegate()
{
}
bool AppDelegate::applicationDidFinishLaunching()
{
// initialize director
//初始化direction
CAApplication* pDirector = CAApplication::getApplication();
//初始化窗口
CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
pDirector->setOpenGLView(pEGLView);
// run
//啟動(dòng) RootWindow入口
pDirector->runWindow(RootWindow::create());
return true;
}
// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground()
{
//暫停動(dòng)畫
CAApplication::getApplication()->stopAnimation();
// if you use SimpleAudioEngine, it must be pause
//暫停音效,如果你有使用音效,希望程序切到后臺(tái)音效停止,請(qǐng)解下面代碼的注釋
// SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
//回復(fù)動(dòng)畫
CAApplication::getApplication()->startAnimation();
// if you use SimpleAudioEngine, it must resume here
//回復(fù)音效,如果你有使用音效,希望程序切到激活狀態(tài)音效恢復(fù),請(qǐng)解下面代碼的注釋
// SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
RootWindow比較簡(jiǎn)單,我這里就不想詳述,我來看一看FirstViewController都做了什么?
首先打開FirstViewController.h文件
//加載函數(shù) 一般做初始化UI和邏輯
void viewDidLoad();
//卸載函數(shù) 一般做移除和釋放
void viewDidUnload();
再來看看FirstViewController.cpp的 vievDidLoad();里的代碼:
void FirstViewController::viewDidLoad()
{
// Do any additional setup after loading the view from its nib.
DRect winRect = this->getView()->getBounds(); //獲得屏幕的Bounds(Bounds不收縮放影響)
//加載一張圖片
CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));
//設(shè)置圖片的Frame顯示大小(Frame的值縮放后會(huì)被改變)
imageView->setFrame(winRect);
//將圖片添加的到屏幕上面(如果不添加,那么這個(gè)ui將不會(huì)被渲染,內(nèi)存也會(huì)在下一個(gè)loop時(shí)被釋放)
this->getView()->addSubview(imageView);
//設(shè)置一個(gè)文本
CALabel* label = CALabel::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5-270, winRect.size.width, 200));
//文本水平方向中間對(duì)其
label->setTextAlignment(CATextAlignmentCenter);
//文本豎直方向中間對(duì)其
label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
//設(shè)置字體大小(CROSSAPP_ADPTATION_RATIO是用于適配的系數(shù))
label->setFontSize(72 * CROSSAPP_ADPTATION_RATIO);
//設(shè)置文本內(nèi)容
label->setText("Hello World!");
//設(shè)置文本顏色
label->setColor(CAColor_white);
//添加到屏幕并設(shè)置z軸
this->getView()->insertSubview(label, 1);
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: