cocos2dx 播放动画
程序员文章站
2024-03-16 16:05:40
...
实现游戏里面可以播放动画的效果
可以实现播放一次和循环播放,对于规定播放次数,我没找到相关方法,有知道的朋友告诉下
1.创建CCTexture2D,并在这张纹理上划分出多个CCSpriteFrame:
可以在一张图片上面截取一部分播放,例如:
也可以加载几张图片进行播放:
2.创建数组,放入创建出一个CCAnimation
3.CCAnimation不是一个可以用来显示的类型,它只负责记录动画帧、帧间隔等数据,要让它动起来,需要借助CCAnimate,它是一种Action。
4.创建一个CCSprite实例,然后让它循环播放上面的CCAnimate动作。注意,必须用CCRepeatForever::actionWithAction来包装animate,否则动画只播放一次就停下了。
可以实现播放一次和循环播放,对于规定播放次数,我没找到相关方法,有知道的朋友告诉下
1.创建CCTexture2D,并在这张纹理上划分出多个CCSpriteFrame:
可以在一张图片上面截取一部分播放,例如:
CCTexture2D *texture=CCTextureCache::sharedTextureCache()->addImage("girl.png");
CCSpriteFrame *frame0=CCSpriteFrame::createWithTexture(texture,CCRectMake(32*0, 48*0, 32, 48));
CCSpriteFrame *frame1=CCSpriteFrame::createWithTexture(texture,CCRectMake(32*1, 48*0, 32, 48));
CCSpriteFrame *frame2=CCSpriteFrame::createWithTexture(texture,CCRectMake(32*2, 48*0, 32, 48));
CCSpriteFrame *frame3=CCSpriteFrame::createWithTexture(texture,CCRectMake(32*3, 48*0, 32, 48));
也可以加载几张图片进行播放:
CCSpriteFrame *frame0=CCSpriteFrame::create("bajie.png",CCRectMake(0, 0, 23, 23));
CCSpriteFrame *frame1=CCSpriteFrame::create("linjin.png",CCRectMake(0, 0, 23, 23));
CCSpriteFrame *frame2=CCSpriteFrame::create("plane.png",CCRectMake(0, 0, 23, 23));
CCSpriteFrame *frame3=CCSpriteFrame::create("shuai.png",CCRectMake(0, 0, 23, 23));
2.创建数组,放入创建出一个CCAnimation
CCArray *animFrames = new CCArray(4);
animFrames->addObject(frame0);
animFrames->addObject(frame1);
animFrames->addObject(frame2);
animFrames->addObject(frame3);
CCAnimation *animation = CCAnimation::createWithSpriteFrames(animFrames, 0.2f);
animFrames->release();
3.CCAnimation不是一个可以用来显示的类型,它只负责记录动画帧、帧间隔等数据,要让它动起来,需要借助CCAnimate,它是一种Action。
//使用animation生成一个动画动作animate
CCAnimate *animate = CCAnimate::actionWithAnimation(animation);
4.创建一个CCSprite实例,然后让它循环播放上面的CCAnimate动作。注意,必须用CCRepeatForever::actionWithAction来包装animate,否则动画只播放一次就停下了。
CCSprite *sprite = CCSprite::spriteWithSpriteFrame(frame0);//设置一个初始frame
sprite->setPosition( ccp( s.width/2, s.height/2) );
addChild(sprite);
sprite->runAction(CCRepeatForever::actionWithAction( animate));//重复播放 //sprite->runAction(animate);播放一次
上一篇: 数据结构----递归算法(汉诺塔)