Cocos2d-x 3.x plist+pngアニメーションを作る
6489 ワード
出典を明記してください.http://blog.csdn.net/lttree******************************************
前言:
今回のものは、実は2048が終わった後、Flashが使いたいと思っていました.
例えば、毎日シリーズのように、冒頭に「ティミー」という鳴き声+アニメーションがありますが、感じがいいのではないでしょうか.
以前、最初のゲームをしたとき、78フレームのFlashを作っていましたが、
でも当時は使えなくて、今ちょうど持ってきて使って、へへ~
本文:
今回の例では、私がここ数日作りたいFlappyBirdの小鳥を例に挙げましょう.
1.まず、必要なリソースを作成します.
これは3つの階層があります(現在私が知っている)
①各画像をロード
②すべての画像を1枚の画像に圧縮し、分割して取り出す.
③plistファイルを介してpngと共に画像を取り出す.
最初の2つは、比較的簡単で、効率があまり高くないので、私は直接この3つを使うのが一番いいです.plist+png
実はplistはmacで一般的に使われていますが、
Windowsでplistを作るにはTexturePackerが使えますが、
(ここでダウンロードできます:https://www.codeandweb.com/texturepacker/download )
とても便利なツールです
インストールが完了し、開くには、エンジンを選択する必要があります.もちろん、cocos 2 dを選択します.
開くと、次のインタフェースが表示されます.
このツールの使い方の詳細は、私にはよくわかりません==です.
詳しくは度娘に聞いてみてください.
私はただ知っていて、上のボタンをクリックして、追加して、あなたはPNGの中のピクチャーを圧縮する必要があります:
このテクニックは私が言う必要はありません.
Ctrlを押すと単一で複数選択できます.
Shiftを押すと連続して複数選択できます.
画像を選んで、彼らを加えます.
画像がなければ、下のものを持ってきてください.
次に、左上隅のFileボタンをクリックします.
次に、ドロップダウン・メニューからPublic sprite sheetを選択し、PNGとPLISTを格納するディレクトリを選択します.
まずplistディレクトリ、それからPNGディレクトリで、2つのファイル名が同じであることが望ましい.
すると、出力されます.
OK、あなたが生成した2つのファイルを保存する場所に見ることができます.
2.次はCocos 2 d-xの呼び出し部分です.
2つのファイル(plistとpng)をResourceにコピーし、
VS 2012でResourceフォルダを右クリックし、->既存アイテムを追加し、両方を追加します.
ここで、私は直接HelloWorldインタフェースで、小鳥の飛行アニメーションを放送しました.
ハローワールドでcppのInit関数には、次のコードが含まれています.
説明します.
前①、②は言うまでもなく、
③、これは以前CCArrayかArrayで、
今はだめです.どうせ私は3.0と3.2でArrayを使うことができません.⑤
createWithSpriteFramesで問題が発生し、
この関数定義に追いつくと、次のことがわかります.
最初のパラメータは次のとおりです.
この点は以前のバージョンとは違うので、注意してください.
そして④
これは画像の名前を取得します.なぜですか.
sprintf(str,"bird_hero_%02d.png",i); どうですか.
%02 dは、iを取った後、足りないのは0で補うことができるので、
例えば、%dであれば、
iが1に等しい場合、取得された名前はbird_です.hero_1
%02 d、名前を取得:bird_hero_01
Ok、動いてみると、小鳥が飛んでいます~
PS:オープニングアニメーションとしてはどうすればいいですか?
私の方法は上記のコードの後に計画タスクを追加することです.
どのくらいの時間後のジャンプ:
これで、1フレームどのくらい再生して、全部で何フレームになるかを計算して、オープニングアニメーションにすることができます~.
出典を明記してください.http://blog.csdn.net/lttree******************************************
前言:
今回のものは、実は2048が終わった後、Flashが使いたいと思っていました.
例えば、毎日シリーズのように、冒頭に「ティミー」という鳴き声+アニメーションがありますが、感じがいいのではないでしょうか.
以前、最初のゲームをしたとき、78フレームのFlashを作っていましたが、
でも当時は使えなくて、今ちょうど持ってきて使って、へへ~
本文:
今回の例では、私がここ数日作りたいFlappyBirdの小鳥を例に挙げましょう.
1.まず、必要なリソースを作成します.
これは3つの階層があります(現在私が知っている)
①各画像をロード
②すべての画像を1枚の画像に圧縮し、分割して取り出す.
③plistファイルを介してpngと共に画像を取り出す.
最初の2つは、比較的簡単で、効率があまり高くないので、私は直接この3つを使うのが一番いいです.plist+png
実はplistはmacで一般的に使われていますが、
Windowsでplistを作るにはTexturePackerが使えますが、
(ここでダウンロードできます:https://www.codeandweb.com/texturepacker/download )
とても便利なツールです
インストールが完了し、開くには、エンジンを選択する必要があります.もちろん、cocos 2 dを選択します.
開くと、次のインタフェースが表示されます.
このツールの使い方の詳細は、私にはよくわかりません==です.
詳しくは度娘に聞いてみてください.
私はただ知っていて、上のボタンをクリックして、追加して、あなたはPNGの中のピクチャーを圧縮する必要があります:
このテクニックは私が言う必要はありません.
Ctrlを押すと単一で複数選択できます.
Shiftを押すと連続して複数選択できます.
画像を選んで、彼らを加えます.
画像がなければ、下のものを持ってきてください.
次に、左上隅のFileボタンをクリックします.
次に、ドロップダウン・メニューからPublic sprite sheetを選択し、PNGとPLISTを格納するディレクトリを選択します.
まずplistディレクトリ、それからPNGディレクトリで、2つのファイル名が同じであることが望ましい.
すると、出力されます.
OK、あなたが生成した2つのファイルを保存する場所に見ることができます.
2.次はCocos 2 d-xの呼び出し部分です.
2つのファイル(plistとpng)をResourceにコピーし、
VS 2012でResourceフォルダを右クリックし、->既存アイテムを追加し、両方を追加します.
ここで、私は直接HelloWorldインタフェースで、小鳥の飛行アニメーションを放送しました.
ハローワールドで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& frames, float delay/* = 0.0f*/, unsigned int loops/* = 1*/)
{
Animation *animation = new Animation();
animation->initWithSpriteFrames(frames, delay, loops);
animation->autorelease();
return animation;
}
最初のパラメータは次のとおりです.
const Vector& frames
この点は以前のバージョンとは違うので、注意してください.
そして④
これは画像の名前を取得します.なぜですか.
sprintf(str,"bird_hero_%02d.png",i); どうですか.
%02 dは、iを取った後、足りないのは0で補うことができるので、
例えば、%dであれば、
iが1に等しい場合、取得された名前はbird_です.hero_1
%02 d、名前を取得:bird_hero_01
Ok、動いてみると、小鳥が飛んでいます~
PS:オープニングアニメーションとしてはどうすればいいですか?
私の方法は上記のコードの後に計画タスクを追加することです.
どのくらいの時間後のジャンプ:
this->scheduleOnce(schedule_selector(InkmooFlash::jumpToMain), 4);
これで、1フレームどのくらい再生して、全部で何フレームになるかを計算して、オープニングアニメーションにすることができます~.
出典を明記してください.http://blog.csdn.net/lttree******************************************