【Cocos2D-X 】学习札记(1) 制作一个动态的精灵

【Cocos2D-X 】学习笔记(1) 制作一个动态的精灵

原理:

Cocos2D中有个导演控制整个游戏流程,导演将场景添加到屏幕上,场景中有各种各样的演员。


先通过显示一张图片来看看Cocos2D游戏的流程:

AppDelegate.cpp

bool AppDelegate::applicationDidFinishLaunching()
{
    // 初始化导演
    CCDirector *pDirector = CCDirector::sharedDirector();
    pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());

    // 打开FPS
    pDirector->setDisplayStats(true);

    // 设置FPS the default value is 1.0/60 if you don't call this
    pDirector->setAnimationInterval(1.0 / 60);

    // 创建一个场景
	CCScene *pScene = GameScence::scene();

    // 运行此场景
    pDirector->runWithScene(pScene);
    return true;
}
上边的代码添加了一个场景GameScence,下面看看具体实现:

GameScence.h

#include "cocos2d.h"
#include "Box2D/Box2D.h"

class GameScence : public cocos2d::CCLayer
{
public :
	bool init();
	//必须重写scene()
	static cocos2d::CCScene* scene();
	//相当于create函数,是重写了CCLayer里的create函数
	CREATE_FUNC(GameScence);
};
GameScence.cpp

#include "GameScene.h"

using namespace cocos2d;

CCScene* GameScence::scene()
{
	CCScene * scene = NULL;
	do
	{
		scene=CCScene::create();

		GameScence* gameScene=GameScence::create();
		scene->addChild(gameScene);
	}while(0);

	return scene;
};

bool GameScence::init()
{
	bool bRet = false;
	do
	{
		//从图片创建一个精灵
		CCSprite* pSprite = CCSprite::create("bg.png");
		//获取屏幕大小
		CCSize size = CCDirector::sharedDirector()->getWinSize();
		// 设置精灵在场景中的位置,坐标从左下角0,0
		pSprite->setPosition(ccp(size.width/2, size.height/2));
		// 添加精灵到场景中
		this->addChild(pSprite, 0);
	}while(0);

	bRet=true;

	return bRet;
};

代码中有注释,就不在重复叙述了,

下面是效果图:

【Cocos2D-X 】学习札记(1) 制作一个动态的精灵



怎么让其显示一个动态的精灵呢,下面是修改后的init()

bool GameScene::init()
{
	bool bRet = false;
	do
	{
		CCSprite* pMap = CCSprite::create("bg.png");
		CCSize size = CCDirector::sharedDirector()->getWinSize();
		pMap->setPosition(ccp(size.width/2, size.height/2));
		this->addChild(pMap, 0);

		CCSprite* sprite ;
		CCArray* pSpriteArray=CCArray::createWithCapacity(4);
		for(int i=0;i<4;i++)
		{
			//截取frame
			CCSpriteFrame* pFrame =CCSpriteFrame::create("role.png",CCRectMake(i*82,62*2,82,62));
			pSpriteArray->addObject(pFrame);

			//将精灵添加到场景,默认第一帧图片
			if(i==0){
				sprite= CCSprite::createWithSpriteFrame(pFrame);
				sprite->setPosition(ccp(200,100));
				addChild(sprite);
			}
		}
		//从array创建动画
		CCAnimation *splitAnimation=CCAnimation::createWithSpriteFrames(pSpriteArray,0.1f);
		sprite->runAction(CCRepeatForever::create(CCAnimate::create(splitAnimation)));

	}while(0);

	bRet=true;

	return bRet;
};


制作动态的图片麻烦,就直接贴图了:

【Cocos2D-X 】学习札记(1) 制作一个动态的精灵




转载请注明出处:http://blog.csdn.net/Vestigge