Cocos2d-x学习笔记(二) —— 如何添加一个精灵

 

教程中的源码可以在这下载:
https://github.com/flyingpacer/Cocos2dxSimpleGame
你可以自己按照文章一步步来完成游戏,或者直接下载完整的代码,简单地编译运行。

1.加入图片资源

创建新的cocos2d-x项目后,你现在应该有一个cocos2d-1.0.1-x-0.10.0/MyGame文件夹。请下载这些图片,并把它们复制到cocos2d-1.0.1-x-0.10.0/MyGame/Resources文件夹里。如图所示:

2.添加一个精灵

你现在会发现把cocos2d游戏从objc移植到c++是多么的简单。打开HelloWorldScene.cpp,替换init方法如下所示:

 1 bool HelloWorld::init()
 2 {
 3     bool bRet = false;
 4     do 
 5     {
 6         //////////////////////////////////////////////////////////////////////////
 7         // super init first
 8         //////////////////////////////////////////////////////////////////////////
 9 
10         CC_BREAK_IF(! CCLayerColor::initWithColor(ccc4(255,255,255,255)));
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         CCSize winSize = CCDirector::sharedDirector()->getWinSize();
39         CCSprite *player = CCSprite::spriteWithFile("Player.png");
40         player->setPosition(ccp(player->getContentSize().width/2,winSize.height/2));
41         this->addChild(player);
42 
43             bRet = true;
44     } while (0);
45 
46     return bRet;
47 }

好了,我们可以编译并运行代码了。现在忍者一袭黑衣,躲在黑暗中闪着红眼。要玩游戏的话,我们必须把背景改成白色的。这非常简单,修改HelloWorld,使它继承CCLayerColor,而不是CCLayer。

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

class HelloWorld : public cocos2d::CCLayerColor

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

  CC_BREAK_IF(! CCLayer::init());

改成

CC_BREAK_IF(! CCLayerColor::initWithColor(ccc4(255,255,255,255)));

 

要点1

1. 在c++里继承默认为private继承,因此需要在CCLayerColor类声明前加上“public”。
2. Cocos2d-iphone的主要作者RicardoQuesada建议我们在cocos2d-x中使用命名空间。检查你所调用的cocos2d-x类是在“cocos2d”命名空间还是在“CocosDenshion”命名空间是非常重要的。


编译并运行,之后你就会看到小英雄孤单地站在白色的背景里。

posted on 2012-07-20 22:04  〃ωǒ系﹄条噚氺dē魚ぐ  阅读(371)  评论(0)    收藏  举报

导航