cocos2d-x播放序列帧动画

本文介绍了如何在cocos2d-x项目中播放序列帧动画,通过自定义QY_AnimationPlayer类,继承自CCNode。关键步骤包括设置帧速、是否循环播放的属性,使用精灵显示每一帧,通过数组存储序列图片名,利用定时器更新显示,并通过读取plist文件初始化动画。
摘要由CSDN通过智能技术生成

cocos2d-x播放序列帧动画

最近做项目,需要用到特效,首先我想到的是动画编辑器,目前用于cocos2d-x的动画编辑器不是很多,我曾经用过一款,

Spriter 网址 http://www.brashmonkey.com/

这是一款不错的编辑器,而且对资源的节省也是不错的,但是可惜的是,我们的美术没有用过。我看了看他们做特效用的是Flash或者AE,可以很轻松的导出序列帧动画,我想既可以导出序列帧动画,那么我们在程序里直接播放就可以了。cocos2d-x自带的动画播放类是Animate,不过很遗憾,我没有用过,并且对它也没有什么兴趣,毕竟一个简单的帧动画,实现起来还是很简单的,更何况我们需要的是更多自己的定制。所以我就决定自己写一个播放序列帧的类。

1.我们新建一个类,起名字叫做QY_AnimationPlayer,注意这里,我们让它继承CCNode,而不是CCSprite

首先给它加入两个参数

    //帧速
    CC_SYNTHESIZE(int, m_nFrameSpeed, FrameSpeed);
    //是否循环播放
    CC_SYNTHESIZE(bool, m_bIsLoop, IsLoop);

这里我采用的是cocos2d-x的访问器写法,不明白的同学请自己去看源代码,或者去看Objective-C的语法,因为这一写法是来自于OC的。我们在这里定义了一个整形变量帧速和一个布尔型变量是否循环播放。

2.添加一个精灵显示每帧动画,添加一个数组,用于存放整个动画序列的图片的名字

    CCSprite *m_pAnimateSprite;

我们让这个CCSprite动态的显示不同的图片,那么它就会形成一个动画,动画就是这么来的。


    CCArray *m_pSpriteArray;

在这个数组里存放每一帧的图片名称,通过顺序读取这个数组里的名字,从内存中获取响应的图片,显示在界面上

3.定时器

    schedule(schedule_selector(QY_AnimationPlayer::update),framespeed/1000.0);

启动一个定时器,每隔一定的时间,调用一次update函数,进行一个刷新

void QY_AnimationPlayer::update(float time)
{
    //帧数
    m_nAnimateCounter ++;
    if(m_nAnimateCounter >= m_pSpriteArray->count())
    {
        if(m_bIsLoop)
        {
            m_nAnimateCounter = 0;
        }else{
            //如果不循环播放,那么播放完一遍,移除
            this->unschedule(schedule_selector(QY_AnimationPlayer::update));
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值