在手机游戏开发过程中,应用动画效果是必须的。在cocos2d-x中,如何组织动画,如下:
1.应用CCSpriteBatchNode,步骤如下:
1.1,使用CCSpriteFrameCache::sharedSpriteFrameCache()加载plist文件
1.2,使用CCSpriteBatchNode::create("Big_0.png", 34 ); 函数从本地媒介中加载一个被拼合过的大图。这种方式有利于节省内存,提高渲染效果。
1.3,使用CCSpriteFrame::frameWithTexture函数,从CCSpriteBatchNode对象中加入一个指定位置,大小的图片,然后放在一个数组中。
1.4,使用CCAnimation::createWithSpriteFrames,从精灵帧容器创建一个序列帧动画。
1.5,使用CCAnimate::create(animatio );,从序列帧动画中创建一个动画动作,到动作之后,就可以使用这个动作了,然后在UI中,就可以看见这个动画了。
例子,如下:
//第一步(1.1)
- CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("pd_sprites.plist");
- //pvr.ccz是由TexturePacker图片处理应用后的大图片。它将所有的相类的图片,组成在一起,这样一次性加载到内在中。
- //对机器的内在和性能有比较大的更善。
- _actors = CCSpriteBatchNode::create("pd_sprites.pvr.ccz");
- //消除龋齿
- _actors->getTexture()->setAliasTexParameters();
- this->addChild(_actors, -5);
//第二步(1.2)
-
- //创建精灵帧存放容器
- CCArray* tSpriteFrameArray = CCArray::create();
- //for循环进行读取相应数量的纹理块信息
- for(int b = 0 ; b < FrameNum; ++b)
- {
- //设置纹理不进行抗锯齿模糊,像素精细
- pNewBatchNode->getTexture()->setAliasTexParameters();
- //设置从对应纹理块中读取出一个精灵帧
- CCSpriteFrame* tpSpriteFrame = CCSpriteFrame::frameWithTexture(_actors->getTexture(), tRect, tPackNode.m_bRotated, tOffset, tRect.size);
- //将精灵帧放入容器。
- tSpriteFrameArray->addObject(tpSpriteFrame);
- }
//第三步(1.3)
- //从精灵帧容器创建一个序列帧动画。
- CCAnimation* animation = CCAnimation::createWithSpriteFrames(tSpriteFrameArray,1.0f);
- //设置每两帧间时间间隔为1秒。
- animation->setDelayPerUnit(1.0f);
- //设置动画结束后仍保留动画帧信息。
- animation->setRestoreOriginalFrame(true);
//第四步(1.4)
- //由这个动画序列帧创建建动作
- CCAnimate* action = CCAnimate::create(animation);
- //创建精灵。
- CCSprite* pSprite = CCSprite::create();
- //设置精灵位置。
- pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
//第五步(1.5)
- //让演员演示这个动画。
- pSprite->runAction(action);