您的位置:首页 > 移动开发 > Cocos引擎

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

2012-07-20 22:04 627 查看
教程中的源码可以在这下载: 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方法如下所示:

bool HelloWorld::init()
{
bool bRet = false;
do
{
//////////////////////////////////////////////////////////////////////////
// super init first
//////////////////////////////////////////////////////////////////////////

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

//////////////////////////////////////////////////////////////////////////
// add your codes below...
//////////////////////////////////////////////////////////////////////////

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

// Create a "close" menu item with close icon, it's an auto release object.
CCMenuItemImage *pCloseItem = CCMenuItemImage::itemFromNormalImage(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback));
CC_BREAK_IF(! pCloseItem);

// Place the menu item bottom-right conner.
pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));

// Create a menu with the "close" menu item, it's an auto release object.
CCMenu* pMenu = CCMenu::menuWithItems(pCloseItem, NULL);
pMenu->setPosition(CCPointZero);
CC_BREAK_IF(! pMenu);

// Add the menu to HelloWorld layer as a child layer.
this->addChild(pMenu, 1);

// 添加一个精灵
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCSprite *player = CCSprite::spriteWithFile("Player.png");
player->setPosition(ccp(player->getContentSize().width/2,winSize.height/2));
this->addChild(player);

bRet = true;
} while (0);

return bRet;
}


好了,我们可以编译并运行代码了。现在忍者一袭黑衣,躲在黑暗中闪着红眼。要玩游戏的话,我们必须把背景改成白色的。这非常简单,修改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”命名空间是非常重要的。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: