您好,登錄后才能下訂單哦!
使用CCSpriteBatchNode實現動畫效果
//每當屏幕繪制一個紋理的時候,就要經過三個工作:準備渲染、渲染圖形和渲染后的清除。這些工作產生了渲染一個紋理所固有的開銷,所以要讓硬件知道需要渲染的這一組精靈或動作幀,使用的是同一個紋理。這樣,圖形硬件就會為這組精靈只進行一次準備、渲染、和清除工作了。使用CCSpriteBatchNode就可以做到這一點。
//CCSpriteBatchNode的工作原理如下:
//1、創建一個CCSpriteBatchNode對象,通過傳遞一個包含所有精靈圖片的紋理圖冊的名字作為參數,并把它加入到當前場景中。
//2、接下來,從紋理圖冊中創建的任何精靈,應該把它當作CCSpriteBatchNode的一個孩子加進去。只要精靈包含在紋理圖冊中,那么就沒問題,否則會出錯。
//3、CCSpriteBatchNode可以智能地遍歷它所有孩子結點,并通過一次渲染工作來渲染這些孩子,而不是每個精靈都進行一次渲染,這樣渲染速度就會更快了
我們在boolHelloWorld::init()添加如下代碼:
if ( !CCLayer::init() ) { return false; } CCAnimation* animation = CCAnimation::create(); CCSpriteBatchNode* node = CCSpriteBatchNode::create("grossini.png"); this->addChild(node); CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("grossini.plist"); for (int i = 1; i < 15; i++) { CCString* str = CCString::createWithFormat("grossini_dance_%02d.png",i); const char* ch = str->getCString(); CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache(); CCSpriteFrame* frame = cache->spriteFrameByName(ch); animation->addSpriteFrame(frame); } animation->setDelayPerUnit(0.3f); CCAnimate* animate = CCAnimate::create(animation); CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache(); CCSprite* sprite = CCSprite::createWithSpriteFrame(cache->spriteFrameByName("grossini_dance_01.png")); sprite->setPosition(ccp(100, 100)); node->addChild(sprite); sprite->runAction(CCRepeatForever::create(animate));
代碼下載例子:Hi,推薦文件給你 "動畫例子4.zip" http://vdisk.weibo.com/s/Hw4G7
http://pan.baidu.com/share/link?shareid=260459325&uk=3189484501
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。