成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何添加一個cocos2d-x精靈

移動開發 iOS Android 游戲開發
本文將講述如何添加一個cocos2d-x精靈,你可以自己按照文章一步步來完成游戲,或者直接下載完整的代碼,簡單地編譯運行。

1.1 在iPhone上添加資源

1.2 在Android上添加資源

1.3 在win32上添加資源

1.4 在沃Phone上添加資源

2. 添加一個精靈

要點1

要點2

教程中的源碼可以在這下載:https://github.com/flyingpacer/Cocos2dxSimpleGame

你可以自己按照文章一步步來完成游戲,或者直接下載完整的代碼,簡單地編譯運行。

1.加入圖片資源

這里有三張由Ray Wenderlich的妻子所做的圖片,它們將會用在Cocos2dSimpleGame里。

未標題-3.jpg

學完第一章——在多種平臺上創建新的cocos2d-x項目后,你現在應該有一個cocos2d-x/Cocos2dxSimpleGame文件夾。請下載這些圖片,并把它們復制到cocos2d-x/Cocos2dxSimpleGame/Resources文件夾里。

之后回到各種平臺上的IDE上來。

1.1在iPhone上添加資源

非常簡單,打開Xcode,然后點擊Add->Existing Files from the context menu of Cocos2dxSimpleGame/Resources group,添加上面的三張圖片。請注意,你應當在“Add To Targets”一欄里勾選Cocos2dxSimpleGame

IOSAddResource.png

1.2在Android上添加資源

如果你是運行build_native.sh 來編譯的話,你應該把圖片復制到Resources文件夾,否則就把圖片文件復制到“assets”文件夾。

1.3在win32上添加資源

Win32的可執行文件會在它的相關路徑中尋找資源。因此我們必須手動的把圖片文件從cocos2d-x/Cocos2dxSimpleGame/Resources 文件夾復制到cocos2d-x/Debug.win32 文件夾。

img-2-1.3-xcopy.png

但像我這樣的懶人,總能找到偷懶的辦法。

把這行寫入Post-Build Event-> Command Line

xcopy /Y /E .\Resources\*.* $(OutDir)

每次編譯完成時,VistualStudio會復制資源到可執行的路徑。

1.4在沃Phone上添加資源

在沃Phone 游戲里使用zip格式的資源包是非常推薦的。如果你仍然對此不太清楚,請閱讀How to use ZIP resource package on cocos2d-uphone

2.添加一個精靈

你現在會發現把cocos2d 游戲從objc移植到c++是多么的簡單。打開HelloWorldScene.cpp,替換init方法如下所示:

1bool HelloWorld::init()

2{

3 bool bRet = false;

4 do

5 {

6 //////////////////////////////////////////////////////////////////////////

7 // super init first

8 //////////////////////////////////////////////////////////////////////////

9

10 CC_BREAK_IF(! CCLayer::init());

11

12 //////////////////////////////////////////////////////////////////////////

13 // add your codes below...

14 //////////////////////////////////////////////////////////////////////////

15

16 // 1. Add a menu item with "X" image, which is clicked to quit the program.

17

18 // Create a "close" menu item with close icon, it's an auto release object.

19 CCMenuItemImage *pCloseItem = CCMenuItemImage::itemFromNormalImage(

20 "CloseNormal.png",

21 "CloseSelected.png",

22 this,

23 menu_selector(HelloWorld::menuCloseCallback));

24 CC_BREAK_IF(! pCloseItem);

25

26 // Place the menu item bottom-right conner.

27 pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));

28

29 // Create a menu with the "close" menu item, it's an auto release object.

30 CCMenu* pMenu = CCMenu::menuWithItems(pCloseItem, NULL);

31 pMenu->setPosition(CCPointZero);

32 CC_BREAK_IF(! pMenu);

33

34 // Add the menu to HelloWorld layer as a child layer.

35 this->addChild(pMenu, 1);

36

37 /////////////////////////////

38 // 2. add your codes below...

39

40 CCSize winSize = CCDirector::sharedDirector()->getWinSize();

41 CCSprite *player = CCSprite::spriteWithFile("Player.png",

42 CCRectMake(0, 0, 27, 40) );

43 player->setPosition( ccp(player->getContentSize().width/2, winSize.height/2) );

44 this->addChild(player);

45

46 bRet = true;

47 } while (0);

48

49 return bRet;

50}

上面的代碼中,我實際上僅添加了“2.Add your codes below”那一節的內容。你可以從下面的對比中,看到如何一行一行地把cocos2d-iphone代碼簡單地轉化為cocos2d-x跨平臺的代碼。

1// cpp with cocos2d-x

2bool HelloWorld::init()

3{

4 if ( CCLayer::init() )

5 {

6 CCSize winSize = CCDirector::sharedDirector()->getWinSize();

7 CCSprite *player = CCSprite::spriteWithFile("Player.png",

8 CCRectMake(0, 0, 27, 40) );

9 player->setPosition( ccp(player->getContentSize().width/2,

10 winSize.height/2) );

11 this->addChild(player);

12 }

13 return true;

14}

1// objc with cocos2d-iphone

2-(id) init

3{

4 if( (self=[super init] ))

5 {

6 CGSize winSize = [[CCDirector sharedDirector] winSize];

7 CCSprite *player = [CCSprite spriteWithFile:@"Player.png"

8 rect:CGRectMake(0, 0, 27, 40) ];

9 player.position = ccp(player.contentSize.width/2,

10 winSize.height/2);

11 [self addChild:player];

12 }

13 return self;

14}

要點1

1. 不要使用C++里的__super來替代objc里的super。關鍵字__super僅能在VC++中被識別,但是無法被GCC給編譯。因此你最好調用其父類名稱,CCLayer::init()

2. 這里沒有屬性的概念。因此在objc里的屬性,我們用get/set方法來代替。例如,如果你想要獲取CCSprite的contentSize屬性,你必須調用sprite->getContentSize()方法。contentSize的第一個字母應該為大寫的“C”,之后為它加上“get”前綴。

3. 使用setter來設置屬性的值,“player.position=…”,應變為player->setPosition(…)

4. 但是訪問結構體的成員不遵循這一規則。例如,在winSize結構體中,沒有“width”&“height”的getter/setter

5. 你不需要像objc那樣,解釋每一個參數的用途。例如,[CCSprite spriteWithFile…, rect…];直接轉換為CCSprite::spriteWithFile(…, ….);

6. 我們已經完成了一些常用的CGGeometry函數,諸如CGRectMake, CGPointMake, CGSizeMake, CGPointZero, CGSizeZero, CGRectZero。你可以在cocos2dx/include/CCGemoetry.h中找到它們。它們的用途和iOS一樣。僅有一點點不同在于它們的前綴,為了避免命名上的沖突,在cocos2d-x里,前綴為CG、NS、UI的類都統一改成了CC前綴。

7. 所有cocos2d-x里的游戲元素,例如sprite、layer、scene、label、action都在heap里被分配了內存。因此我們必須用指針“->”來調用它們的方法。

8. 在cpp里,用關鍵字“this”來代替objc里的“self”

9. 現在init方法的返回值是“bool”類型了。在cpp里沒有關鍵字“id”,因此那些返回值為“id”的方法要么替換成對象的指針,要么換成bool。

10. 對于Android,由于標題欄占用了一些空間,因此你需要在cpp里這樣設置玩家的位置(player.contenSize.width/2 + 40, winSize.height/2)。

好了,我們可以編譯并運行代碼了。現在忍者一襲黑衣,躲在黑暗中閃著紅眼。要玩游戲的話,我們必須把背景改成白色的。這非常簡單,修改HelloWorld,使它繼承CCLayerColor,而不是CCLayer。

首先,修改HelloWorldScene.h的聲明部分

1// cpp with cocos2d-x

2class HelloWorld : public cocos2d::CCLayerColor

1// objc with cocos2d-iphone

2@interface HelloWorld : CCLayerColor

之后修改HelloWorld::init()內的初始部分

1if ( !CCLayer::init() )

2{

3 return false;

4}

改成

1if ( !CCLayerColor::initWithColor( ccc4(255,255,255,255) ) )

2{

3 return false;

4}

這里有些和RayWenderlich的代碼不同,因為我偏好防守型的代碼風格。正常的代碼是,if super init 成功了,then 執行什么什么,我比較偏好if init失敗了,先做出錯的處理,之后再編寫正確的流程。好了,回到正題。讓我們來繼續比較c++與objc的轉換

1// cpp with cocos2d-x

2if ( CCLayerColor::initWithColor( ccc4(255,255,255,255) ) )

1// objc with cocos2d-iphone

2if ( self = [super initWithColor:ccc4(255,255,255,255)] )

要點2

1. 在c++里繼承默認為private繼承,因此需要在CCLayerColor類聲明前加上“public”。

2. Cocos2d-iphone的主要作者RicardoQuesada建議我們在cocos2d-x中使用命名空間。檢查你所調用的cocos2d-x類是在“cocos2d”命名空間還是在“CocosDenshion”命名空間是非常重要的。

編譯并運行,之后你就會看到小英雄孤單地站在白色的背景里。

iPhone:

IOSSprite.png

Android:

androidSprite.png

沃Phone:

WoPhoneSprite.png

Win32:

Win32Sprite.png

責任編輯:佚名 來源: cocos2d-x
相關推薦

2012-04-17 10:59:31

cocos2d-x

2011-12-12 10:40:08

Cocos2d-X游戲開發開發環境

2012-04-17 12:44:38

cocos2d-x

2012-04-17 12:38:46

cocos2d-x

2013-06-03 17:04:20

CocoStudioCocos2D-X添加CocoStudi

2013-05-22 15:49:46

2013-04-16 10:02:47

cocos2d-x懶人Android開發

2012-04-17 12:47:27

cocos2d-x

2014-07-31 16:57:30

2012-04-17 13:12:00

2013-12-03 10:58:50

Cocos2D-X磚塊地圖

2013-05-22 14:38:44

iOS開發Cocos2d-x坐標系統

2012-04-17 12:58:44

Cocos2D-X

2012-02-19 20:10:23

Cocos2d-x fCocos2dWindows Pho

2015-07-17 10:38:21

教程COCOS射箭游戲

2012-04-17 12:52:01

cocos2d-x

2013-11-13 16:31:32

Cocos2d-x

2012-05-09 10:09:57

Cocos2d-xAndroidiOS

2013-06-07 14:06:52

移動開發Android開發cocos2d-x

2014-08-13 10:07:02

游戲引擎
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品美女久久久 | 亚洲精品视频网站在线观看 | 嫩草研究影院 | 夜夜艹天天干 | 91精品国产高清久久久久久久久 | 精品视频在线观看 | 亚洲午夜精品久久久久久app | 91一区二区 | 中文字幕日韩在线 | 久久人人爽人人爽人人片av免费 | 国产亚洲精品综合一区 | 成人高清网站 | 99精品欧美一区二区蜜桃免费 | 全免费a级毛片免费看视频免费下 | www国产成人免费观看视频,深夜成人网 | 久久精品国产亚洲一区二区 | 国产成人精品一区二区三区视频 | 国产精品一二三区 | 久久久免费电影 | 九九久久精品 | 精品国产一区二区在线 | 天天操天天天 | 一区福利视频 | 亚洲精品日韩在线观看 | 欧美国产精品一区二区三区 | 国产高清视频 | 欧美小视频在线观看 | 国产99视频精品免费视频7 | 91国内产香蕉 | 在线视频亚洲 | h视频在线免费 | 91精品国产综合久久精品图片 | 91久久精品一区二区二区 | 精品国产女人 | 精品91久久 | 欧美一级高潮片免费的 | a毛片| 天天干com| 日韩欧美在线观看 | 精品一二三区视频 | 一区二区三区高清 |