亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cocos2d-x學習筆記(二)序列幀動畫實現的幾種方法

發布時間:2020-07-25 14:21:14 來源:網絡 閱讀:3104 作者:wty530 欄目:游戲開發

一、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.pngmachine_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));


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

诸暨市| 藁城市| 通辽市| 安国市| 海口市| 大安市| 会东县| 秭归县| 石门县| 九龙城区| 武邑县| 正定县| 且末县| 广州市| 延川县| 新田县| 惠安县| 永嘉县| 库尔勒市| 昆明市| 滨州市| 襄垣县| 叙永县| 房山区| 广南县| 凌海市| 廉江市| 徐水县| 莆田市| 金川县| 大庆市| 达州市| 日土县| 繁峙县| 永定县| 壤塘县| 洪雅县| 江孜县| 天等县| 蕉岭县| 东宁县|