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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值