您好,登錄后才能下訂單哦!
目錄結構:
Box2D | 物理引擎Box2D的相關文件 |
Chipmunk | 物理引擎Chipmunk的相關文件 |
cocos2dx | cocos2d-x引擎的核心,存放引擎的大部分源文件 |
CocosDenshion | 音頻模塊相關源文件 |
Debug.win32 | 在Windows上的調試輸出目錄 |
Doxygen | 生成doxygen項目文檔時需要的配置文件 |
HelloWorld | HelloWorld的源代碼 |
Hellolua | lua的示例代碼 |
Lua | lua腳本支持的源碼 |
Js | Js腳本支持的源碼 |
Licences | 許可文件的目錄 |
Template | 包括編譯Ios和Android平臺開發時的配置文件 |
testjs | cocos2d-x引擎js語言的API示例代碼 |
tests | cocos2d-x引擎的所有API示例代碼 |
Tools | 包括“Tolua的配置文件”和“Xcode4的模版生成工具” |
1.類AppDelegate //控制游戲生命周期
類AppDelegate繼承了CCApplication,定義了三個方法:
virtualbool applicationDidFinishLaunching(); //響應窗口啟動完成后的工作
virtualvoid applicationDidEnterBackground(); //響應窗口進入后臺的工作
virtualvoid applicationWillEnterForeground(); //響應窗口從后臺恢復的工作
I 啟動時初始化的工作
bool AppDelegate::applicationDidFinishLaunching()
{
// initialize Director
CCDirector* pDirector =CCDirector::sharedDirector(); // 場景管理器
CCEGLView* pEGLView =CCEGLView::sharedOpenGLView(); //創建視口
pDirector->setOpenGLView(pEGLView); //設置OpenGL視口
// Set the design resolution
pEGLView->setDesignResolutionSize(designResolutionSize.width,designResolutionSize.height, kResolutionNoBorder); //設置分辨率大小
CCSize frameSize =pEGLView->getFrameSize();
vector<string> searchPath; //資源路徑
//在不同的平臺下加載不同的資源
if (frameSize.height> mediumResource.size.height)
{
searchPath.push_back(largeResource.directory);
pDirector->setContentScaleFactor(MIN(largeResource.size.height/designResolutionSize.height,largeResource.size.width/designResolutionSize.width));
}
// if the frame'sheight is larger than the height of small resource size, select mediumresource.
else if (frameSize.height > smallResource.size.height)
{
searchPath.push_back(mediumResource.directory);
pDirector->setContentScaleFactor(MIN(mediumResource.size.height/designResolutionSize.height,mediumResource.size.width/designResolutionSize.width));
}
// if the frame's height is smaller than the height of medium resource size, select smallresource.
else
{
searchPath.push_back(smallResource.directory);
pDirector->setContentScaleFactor(MIN( smallResource.size.height/designResolutionSize.height , smallResource.size.width/designResolutionSize.width ) );
}
//設置資源文件路徑
CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath);
// turn ondisplay FPS
pDirector->setDisplayStats(true); //開啟顯示FPS
// set FPS. the default value is 1.0/60 if you don't call this
pDirector->setAnimationInterval(1.0 /60); // 設置幀速率 ,最好不要低于30幀
// create a scene. it's an autorelease object
CCScene *pScene = HelloWorld::scene(); //調用靜態方法創建一個場景,HelloWorld中會負責場景的實現
pDirector->runWithScene(pScene); //導演調用,運行HelloWorld中的場景。
return true;
}
II 暫停動作
// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground()
{
CCDirector::sharedDirector()->stopAnimation(); //暫停活動
// if you use SimpleAudioEngine, it must be pause
// SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); //暫停背景音樂
}
III 恢復動作
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
CCDirector::sharedDirector()->startAnimation(); // 恢復活動
// if you use SimpleAudioEngine, it must resume here
// SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); // 恢復背景音樂
}
2.HelloWorld
CCScene*HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create(); //創建場景
// 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create(); //創建圖層
// add layer as achild to scene
scene->addChild(layer); //添加圖層作為節點
// return the scene
return scene;
}
bool HelloWorld::init()
{
// 1. super initfirst
if (!CCLayer::init() ) //創建圖層
{
return false;
}
CCSize visibleSize =CCDirector::sharedDirector()->getVisibleSize(); //獲取大小
CCPoint origin =CCDirector::sharedDirector()->getVisibleOrigin(); //獲取原點,原點(origin.x , origin.y)在左下角
CCMenuItemImage *pCloseItem =CCMenuItemImage::create( "CloseNormal.png, "CloseSelected.png", this,
menu_selector( HelloWorld::menuCloseCallback ) ); //創建關閉按鈕 ,在這里的圖片路徑如果不是在/Resources 目錄下,則圖片不能使用。 如果要在Resources目下放置文件夾,則需要在字符串中加入路徑名稱,如”/raster-32x32/ 32x32.png“
//設置按鈕位置,可以看出 Cocos2d-x的坐標原點是左下角
pCloseItem->setPosition(ccp(origin.x+ visibleSize.width - pCloseItem->getContentSize().width/2 ,
origin.y +pCloseItem->getContentSize().height/2));
// visibleSize.width 屏幕的寬度
// pCloseItem->getContentSize().width/2 是圖片寬度的1/2
// pCloseItem->getContentSize().height/2 是圖片高度的1/2
// pCloseItem->setPosition(ccp(origin.x , origin.y ) ); // pCloseItem的坐標設置是以默認錨點為坐標中心,即錨點在(0,0),此時按鈕只能顯示1/4
//創建菜單,將關閉按鈕加入到菜單項
CCMenu* pMenu = CCMenu::create(pCloseItem,NULL);
pMenu->setPosition(CCPointZero); // 設置菜單的位置
this->addChild(pMenu,1); // 將菜單加入到HelloWorld圖層中
//創建 HelloWorld 文本
CCLabelTTF* pLabel = CCLabelTTF::create("Hello World","Arial",TITLE_FONT_SIZE);
// position thelabel on the center of the screen
pLabel->setPosition(ccp(origin.x +visibleSize.width/2,
origin.y +visibleSize.height - pLabel->getContentSize().height)); //設置文本(Label)的位置 ,坐標是字符串中心的坐標,并不是最開始的位置
// add the labelas a child to this layer
this->addChild(pLabel,1); // 將文本(Label)加入到HelloWorld圖層中
//創建精靈圖片
CCSprite* pSprite = CCSprite::create("HelloWorld.png");
// position thesprite on the center of the screen
pSprite->setPosition(ccp(visibleSize.width/2 + origin.x,visibleSize.height/2 + origin.y)); // 設置圖片精靈的位置
// add the spriteas a child to this layer
this->addChild(pSprite,0); // 將圖片精靈加入到HelloWorld圖層中 (第二個參數是Z軸坐標:0在底層,1在上層 。 Z軸坐標系參考笛卡爾右手坐標系(正方向:x軸向右,y軸向上,z軸向外)
//設置為相同的Z軸坐標時,按加載順序顯示,先加載的先顯示,后加載的后顯示
return true;
}
IIII 點擊按鈕結束的回調函數
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
#else
CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。