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

用cocos2dx来做好玩的游戏 第一天 添加精灵动画

2014-02-12 00:01 453 查看
1.使用TexturePacker将图片打包成Action1.plist

2.代码中读入图片资源

3.分别创建帧动画和位移动画

4.同时播放帧动画和位移动画

具体代码如下:

#include "MenuScene.h"

USING_NS_CC;

CCScene *MenuScene::scene()
{
CCScene *scene = CCScene::create();

MenuScene *layer = MenuScene::create();

scene->addChild(layer);

return scene;
}

bool MenuScene::init()
{
if (!CCLayer::init()) {
return false;
}

this->setTouchEnabled(true); // 触摸开启

// 添加背景
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

CCSprite *spriteBG = CCSprite::create("background.png");
spriteBG->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(spriteBG, 0);

// 创建动画
// 将精灵添加进缓冲区
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("Action1.plist");

// 创建帧数组并将缓冲区图片加入数组
CCArray *runArray = CCArray::create();
for (int i=1; i<5; i++) {
//        CCLog(CCString::createWithFormat("cm00%d.png", i)->getCString());
runArray->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(CCString::createWithFormat("cm00%d.png", i)->getCString()));
}

// 指定第一张图为第一帧
CCSprite *sprite = CCSprite::createWithSpriteFrame((CCSpriteFrame *)runArray->objectAtIndex(0));

// 获取精灵大小并设置精灵各个位置坐标
CCSize spriteSize = sprite->getContentSize();
float startX = origin.x - spriteSize.width;
float midX = visibleSize.width / 2;
float endX = visibleSize.width + spriteSize.width;

float startY = visibleSize.height / 2;
float midY = startY;
float endY = startY;

// 添加精灵到起始位置
sprite->setPosition(ccp(startX, startY));
this->addChild(sprite);

// 创建行走动画
CCAnimation *frameAnimation = CCAnimation::createWithSpriteFrames(runArray, 0.2f);
CCAnimate *frameAnimate = CCAnimate::create(frameAnimation);

// 创建位移动画 从屏幕左边走出,移动到屏幕中央
CCFiniteTimeAction *moveToMidAction = CCMoveTo::create(3.5, ccp(midX, midY));

// 播放帧动画
sprite->runAction(CCRepeatForever::create(frameAnimate));

// 播放位移动画
sprite->runAction(moveToMidAction);

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