日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cocos2d-x 3.x plist+png 做动画

發布時間:2025/4/9 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cocos2d-x 3.x plist+png 做动画 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

***************************************轉載請注明出處:http://blog.csdn.net/lttree******************************************




前言:


這次的東西,事實上是在做完2048后,我有個Flash想用。

就像,天天系列。開頭會有 ”提米“ 的叫聲+動畫, 是不是感覺非常帶感。

之前。做第一個游戲的時候,有做一套78幀的Flash,

可是當時不會用,如今正好拿過來用了。嘿嘿~


正文:


這次樣例,就拿我這幾天想做的 FlappyBird 的小鳥為例吧:

1.首先,我們先來做須要的資源。

這個有三個層次(眼下我知道的)

① 載入每一個圖片

② 把全部圖片壓縮到一張圖片中。然后切割取出。

③借助于plist文件與png共同取出圖片。


前兩種,比較簡單。并且效率不是非常高,我就直接用這三者最好的,plist+png

事實上,plist通常是用在mac上的,

在windows制作plist能夠用 TexturePacker,

(能夠在這里下載:https://www.codeandweb.com/texturepacker/download?)

很方便的一個工具。

安裝完成,打開,須要選擇你的引擎,當然我們選擇的是cocos2d的:



打開以后,會出現例如以下界面:



這個工具的使用細節,我不是非常懂= =。

具體的能夠問問度娘。

我僅僅知道,點上面那個button,加入,你所須要壓縮在PNG里的圖片:



這個技巧不須要我多說了吧:

按住Ctrl 能夠單個多選,

按住Shift能夠連續多選。


選出圖片。并把他們增加進來。

假設沒有圖片,拿以下的湊合一下吧:



然后點擊 左上角 的Filebutton:



然后,在下拉的菜單中,選 ?Public sprite sheet 。然后就選擇存放 PNG和PLIST的文件夾:



先是plist文件夾,然后是PNG文件夾。最好兩個文件名稱是一樣的。

接著,就會給你輸出出來了:



OK,你就能夠到存放的地方看你所生成的兩個文件了。



2.接下來就是Cocos2d-x ?中調用部分了。


把兩個文件(plist和png) 拷貝到Resource 里面。

在VS2012 中 右鍵點擊Resource 目錄。加入->現有項,將兩者加入進來。



這里。我就直接在HelloWorld界面,放小鳥飛行動畫了。


在HelloWorldScene.cpp的Init函數中增加,例如以下代碼:

// ①創建緩存,將圖片讀取進來CCSpriteFrameCache * cache = CCSpriteFrameCache::sharedSpriteFrameCache(); cache -> addSpriteFramesWithFile("hero_bird.plist");// ②創建第一幀,設置位置,增加到當前場景CCSprite *sp = CCSprite::createWithSpriteFrameName("bird_hero_01.png");sp -> setPosition(Point(visibleSize.width/3,visibleSize.height/2));this -> addChild( sp );// ③創建集合,存每一張圖片Vector< SpriteFrame* > sfme = Vector< SpriteFrame* >::Vector();char str[20] = {0};for( int i = 1 ; i < 4 ; ++i ){// ④ 獲取圖片名字,增加到集合中sprintf(str,"bird_hero_%02d.png",i);SpriteFrame *fname = cache -> spriteFrameByName( str );sfme.pushBack( fname );}// ⑤ 創建動畫,設置播放速度CCAnimation *animation = CCAnimation::createWithSpriteFrames( sfme , 0.1f );sp -> runAction ( CCRepeatForever::create(CCAnimate::create(animation )));
來解釋一下:

前面①、② 無需多說,

③,這個曾經用CCArray或者Array,

如今不行了,反正我是3.0和3.2都不能用Array。會在⑤

createWithSpriteFrames出問題,

由于追到這個函數定義。能夠發現:

Animation* Animation::createWithSpriteFrames(const Vector<SpriteFrame*>& frames, float delay/* = 0.0f*/, unsigned int loops/* = 1*/) {Animation *animation = new Animation();animation->initWithSpriteFrames(frames, delay, loops);animation->autorelease();return animation; }
它的第一個參數必須為:const Vector<SpriteFrame*>& frames

這點就要和 ?之前版本號不同,要注意一下。


然后是 ④

這個獲取圖片名字。為什么是:

sprintf(str,"bird_hero_%02d.png",i); 呢?


由于%02d,能夠保證,取i后,不夠的用0補足。

比方,假設是%d,

當i等于1, 獲取的名字是: bird_hero_1

而%02d。獲取名字是: bird_hero_01


Ok,執行一下,就能夠發現小鳥在飛翔啦~


PS:怎樣作為一個開場動畫呢?

我的方法就是在上述代碼后,加一句計劃任務。

多長時間后的跳轉:

this->scheduleOnce(schedule_selector(InkmooFlash::jumpToMain), 4);
這樣,算好播放一幀多久。總共多少幀,就能夠做成開場動畫啦~。~





***************************************轉載請注明出處:http://blog.csdn.net/lttree******************************************

版權聲明:本文博主原創文章,博客,未經同意不得轉載。

轉載于:https://www.cnblogs.com/blfshiye/p/4797222.html

總結

以上是生活随笔為你收集整理的Cocos2d-x 3.x plist+png 做动画的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。