cocos2dx 动画第一个demo

本文介绍如何使用Cocos2d-x实现一个简单的帧动画效果,包括加载动画帧、设置动画播放速度及实现角色行走动画。通过具体代码展示了动画精灵的创建与动作设置过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今晚写代码很带劲,所以又测试了一下cocos2dx的动画,基本是按照书上的思路写的,废话少说,直接贴代码:

帧动画如图:


bool StartScene::initAnimation2()

{
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();

        // 加载整个动画关键帧的纹理

CCTexture2D* pAnimationTexture = CCTextureCache::sharedTextureCache()->addImage("startscene_npc_0.png");
float wPerFrame = pAnimationTexture->getContentSize().width / 4;
float hPerFrame = pAnimationTexture->getContentSize().height / 4;

       // 设置每帧动画时间
CCAnimation* pNPCAnimation = CCAnimation::create();
pNPCAnimation->setDelayPerUnit(0.2f);


float moveDistance = 15.0f;


        // 动画其实也需要挂在一个精灵上,所以创建一个第一帧的精灵

CCSpriteFrame* frameStart = CCSpriteFrame::createWithTexture(pAnimationTexture, CCRectMake(0, 0, wPerFrame, hPerFrame));
CCSprite* pNPC = CCSprite::createWithSpriteFrame(frameStart);
pNPC->setPosition( ccp( winSize.width/2-moveDistance, 430) );

        

       // 加载其余帧,只加载上面两排横向走的动画

for (int i=0; i<2; i++)
{
for (int j=0; j<4; j++)
{
pNPCAnimation->addSpriteFrameWithTexture(pAnimationTexture, 
CCRectMake(j*wPerFrame, i*hPerFrame, wPerFrame, hPerFrame));
}
}
CCAnimate* pAnimate = CCAnimate::create(pNPCAnimation);
pNPC->runAction(CCRepeatForever::create(pAnimate));

        

        // 这个动画是一个NPC往右走四帧然后往左走四帧,所以与此同时加上两个位移的动作,就可以看上去NPC在走动了,

       // 时间设置 0.8f = 0.2f * 4;  0.2是每帧间隔时间,往一边走的动画有4帧。

CCMoveTo* pMoveRight = CCMoveTo::create(0.8f, ccp( winSize.width/2 + moveDistance, 430));
CCMoveTo* pMoveLeft = CCMoveTo::create(0.8f, ccp( winSize.width/2 - moveDistance, 430));


CCSequence* pMoveSeq=CCSequence::create(pMoveRight,pMoveLeft,NULL);  
CCRepeatForever* pMoveForever = CCRepeatForever::create((CCActionInterval*)pMoveSeq);
pNPC->runAction(pMoveForever);


addChild(pNPC);


return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值