您好,登錄后才能下訂單哦!
一、cocos2d-x幫助文檔中關于動畫幀動畫的實現有兩種方法:
手動添加序列幀到Animation類
使用文件初始化Animation類
這里我就不列出來,大家可以看下官方文檔
http://www.cocos.com/doc/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/frame-animation/zh.md
二、有些時候我們需要從plist取出指定的幾個圖片(而不是全部)來播放動畫,接下來我們主要介紹下這種方法:
1、首先我們先通過使用SpriteFrameCache來創建精靈幀緩存
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("test.plist");
2、假設test.plist中有machine_1.png和machine_2.png這兩個精靈圖片,通過createWithSpriteFrameName可以獲取精靈:
auto machine = Sprite::createWithSpriteFrameName("machine_1.png");
3、創建一個Vector類型的數據用來存放所需要的精靈幀,通過for循環添加動畫精靈
Vector<SpriteFrame*>frameVector; for(inti=1;i<3;i++) { char pngName[100] = {0}; sprintf(pngName, "machine_%d.png",i); frameVector.pushBack(SpriteFrameCache::getInstance()->getSpriteFrameByName(pngName)); }
4、設置動畫參數并播放序列幀動畫
//第二個參數是動畫執行的持續時間 auto animation = Animation::createWithSpriteFrames(frameVector,0.2); //設置動畫執行完時是否回到原始狀態 animation->setRestoreOriginalFrame(false); //設置動畫反復執行的次數 animation->setLoops(10000); //用動畫緩存初始化Animation實例,用Animate實例來播放序列幀動畫 auto action = Animate::create(animation); machine->runAction(Sequence::create(action,action->reverse(), NULL));
5、完整的代碼如下:
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("test.plist"); //創建精靈machine auto machine = Sprite::createWithSpriteFrameName("machine_1.png"); machine->setPosition(Vec2(visible.width/2,visible.height/2)); this->addChild(machine,1); //創建一個Vector類型的數據用來存放所需要的精靈幀 Vector<SpriteFrame*> frameVector; for( int i=1;i<3;i++) { char pngName[100] = {0}; sprintf(pngName, "machine_%d.png", i); SpriteFrame* pngNameSF = SpriteFrameCache::getInstance()->getSpriteFrameByName(pngName); frameVector.pushBack(pngNameSF); } //第二個參數是動畫執行的持續時間 auto animation = Animation::createWithSpriteFrames(frameVector, 0.2); //設置動畫執行完時是否回到原始狀態 animation->setRestoreOriginalFrame(false); //設置動畫反復執行的次數 animation->setLoops(10000); //用動畫緩存初始化Animation實例,用Animate實例來播放序列幀動畫 auto action = Animate::create(animation); machine->runAction(Sequence::create(action, action->reverse(), NULL));
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。