Cocos2d-x学习三:自定义动画

本文介绍如何使用Cocos2d-x游戏引擎创建精灵动画。通过加载纹理和定义精灵帧,实现连续动画效果,并展示如何为不同精灵设置动画。

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

CCTexture2D *pTexture = CCTextureCache::sharedTextureCache()->addImage("hero.png");
CCSpriteFrame *frame0 = CCSpriteFrame::createWithTexture(pTexture, CCRectMake(0,0,32,32));
CCSpriteFrame *frame1 = CCSpriteFrame::createWithTexture(pTexture, CCRectMake(32,0,32,32));
CCSpriteFrame *frame2 = CCSpriteFrame::createWithTexture(pTexture, CCRectMake(64,0,32,32));
CCSpriteFrame *frame3 = CCSpriteFrame::createWithTexture(pTexture, CCRectMake(96,0,32,32));
CCArray *animFrames = CCArray::create();
animFrames->addObject(frame0);
animFrames->addObject(frame1);
animFrames->addObject(frame2);
animFrames->addObject(frame3);

CCAnimation *animation = CCAnimation::createWithSpriteFrames(animFrames, 0.2f);

CCSprite *heroSprite0 = CCSprite::createWithSpriteFrame(frame0);
//CC_BREAK_IF(!heroSprite0);
heroSprite0->setPosition(ccp(100,100));
this->addChild(heroSprite0,1);
CCAnimate *animate = CCAnimate::create(animation);
heroSprite0->runAction(CCRepeatForever::create(animate));

//next is for the animation2
CCAnimation *animation2 = CCAnimation::create();

for(int i=1;i<19;i++)
{
char *tt = new char[3];
memset(tt,0,3);
std::string s;

if(i<10)
{
itoa(i,tt,10);
s="fish00" + std::string(tt);
} else {
itoa(i,tt,10);
s="fish0" + std::string(tt);
}

s=s+".png";
CCTexture2D *playerRunTexture = CCTextureCache::sharedTextureCache()->addImage(s.c_str());
CCSpriteFrame *fishFrame = CCSpriteFrame::createWithTexture(playerRunTexture, cocos2d::CCRectMake(0,0,100,100));
animation2->addSpriteFrame(fishFrame);

delete []tt;
}

animation2->setDelayPerUnit(0.2f);
CCAnimate *action = CCAnimate::create(animation2);

CCTexture2D *playerRunTexture0 = CCTextureCache::sharedTextureCache()->addImage("fish001.png");

CCSprite *p = CCSprite::createWithSpriteFrame(CCSpriteFrame::createWithTexture(playerRunTexture0, cocos2d::CCRectMake(0,0,100,100)));
p->setPosition(ccp(200,200));
this->addChild(p,1);

p->runAction(CCRepeatForever::create(action));

CCMoveBy *moveBy = CCMoveBy::create(1.0f,ccp(100,50));
p->runAction(CCRepeatForever::create(moveBy));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值