cocos2dx-6.帧动画

1秒有60帧。

大致步骤:
1.先创建SpriteFrame数组
2.然后利用矩形截取或者图片缓冲池创建每一帧并加入数组
3.用Animation完成帧动画的设置,并加入Animate对象

1.利用精灵帧的图片截取矩形来创建

	Sprite* sprite = Sprite::create("donhua/1.png");
	SpriteFrame* frame = NULL;
	Vector<SpriteFrame*>aniframe;

	for (int i = 1; i <= 7; i++)
	{
		frame = SpriteFrame::create(String::createWithFormat("donhua/%d.png", i)
			->getCString(), CCRectMake(0, 0, 132, 105));
		aniframe.pushBack(frame);
	}
	CCAnimation* animation = CCAnimation::createWithSpriteFrames(aniframe,0.1f,-1);
	//1.图片数组2.帧动画间隔时间3.动画次数,为-1是重复
	Animate* animate = Animate::create(animation);
	//RepeatForever* forever = RepeatForever::create(animate);
	sprite->runAction(animate);
	sprite->setPosition(ccp(visibleSize.width / 2, visibleSize.height / 2));
	this->addChild(sprite);

2.通过加载图片缓冲池spriteframecache

	SpriteFrameCache* cache = SpriteFrameCache::getInstance();
	cache->addSpriteFramesWithFile("boy.plist");
	Sprite* sprite = Sprite::createWithSpriteFrameName("donhua/1.png");
	//当plist添加至缓冲池后,下面创建精灵就可以用createWithSpriteFrameName
	SpriteFrame* frame = NULL;
	Vector<SpriteFrame*>aniframe;
	for (int i = 1; i <= 7; i++)
	{
		frame = cache->spriteFrameByName(String::createWithFormat("donhua/%d.png", i)
			->getCString());
		//通过spriteFrameByName获取每一帧动画
		aniframe.pushBack(frame);
	}
	CCAnimation* animation = CCAnimation::createWithSpriteFrames(aniframe,0.1f,-1);
	Animate* animate = Animate::create(animation);
	//RepeatForever* forever = RepeatForever::create(animate);
	sprite->runAction(animate);
	sprite->setPosition(ccp(visibleSize.width / 2, visibleSize.height / 2));
	this->addChild(sprite);
    return true;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值