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;
}