さて最終回となる第4回は、Flashの定番、アニメーションを使ったサンプルをご紹介します。
Flashにおけるアニメーションの方法
Flashでオブジェクトを動かすには、大きく2種類の方法があります。
- FlashIDEを使って、動く前のオブジェクトと動く後のオブジェクトを異なるフレームに置いてぱらぱら漫画のように見せる方法
- Actionscriptを使用して、オブジェクトのプロパティ(位置や色等)をフレーム毎に変更する方法
前者はキャラクターの手足を動かすなど細やかな動き、後者は多くのオブジェクトを同時に動かすことが得意などそれぞれ特徴があり、必要に応じて使い分けます。
オープンソースのActionscriptのアニメーションライブラリは、非常に多く公開されており、開発も活発に行われています。各ライブラリのパフォーマンスチェックもさかんで、良い競争状態にあるようです。例えば、Jack Doyle氏のブログの記事では、多くのオブジェクトを同時に動かす場合のパフォーマンス比較を取り上げています。
wonderflでは、以下のアニメーションライブラリを使用可能です。
- tweener, version: 1.31.74
- TweenLite, ver10.09
- TweenMax, ver10.09
- tweensy, ver0.2.2
wonderflでtweensy入門
tweensyはその中でも最も新参のライブラリで、高速&省メモリを特徴としています。
gihyo.jpの過去の特集「プログラマのためのFlash遊び方:第6回 動きのある Flashを作る(後編)」では、Tweenerを使ったサンプルが解説されています。
このサンプルと同じものを、tweensyを使用してサンプル「tweensy demo」をつくってみました。クリックする度に、色のついた円が「もわっ」と表示されます。
このコードは以下のとおりです。確認してみましょう。
Tweenerのサンプルとの差分は、ライブラリのimport宣言をしている6行目と、27~30行目のみです。1秒間かけて、sというSpriteのscaleX,scaleYプロパティを5にしています(デフォルト値は1)。
なお、tweensyのドキュメントによれば、tweensy.toは以下の仕様となっています。
つまり、Tweenerとは引数の与え方が異なり、durationやeaseは第二引数のオブジェクトに入れるのではなく、別の引数として与えます。
今回のサンプルでは使用している引数の数は3つですが、wonderflのfork機能を使用して、以下のような変更を加えながら理解を深めてみましょう。
- トランジションを変更してみる(第4引数)
- Tweenerの特集にあるようにアニメーション完了後に呼ばれるコールバック関数を設定してみる(tweensyではto関数の第7引数)
また、wonderflでtweensyを使っているコードも参考になります。確認してみてください。
Papervision3D x tweensy
それでは、tweensyと前回扱ったPapervision3Dをつかって、3DCGアニメーションをつくってみましょう。
以下に、前回のPapervision3Dのサンプル「papervision3d light and a flatshadedcube」をforkして、tweensyを使用しクリックした時に一時的にカメラを移動させる(視点を近づける)機能を追加した簡単なサンプル「papervision3d light and a flatshadedcube with tweensy」を作成しました。
コードは以下のとおりです。
Papervision3Dの3Dの世界で、クリックイベントを受け取るためのお約束は、以下の部分になります。
- 36行目:Viewport3Dの第四引数interactiveをtrueに
- 45~48行目:materialのinteractiveをtrueに
これらを設定して、cubeに対して以下のコードを記述すれば、クリックイベントを受け取れるようになります。
クリックイベントのハンドラでは、Tweensyでカメラのz位置を移動し、その完了後にカメラ位置を元に戻しています(Tweensy.toの第7引数onCompleteに、cameraのzを元の位置:-1000に動かす処理を追加)。
まとめ
さて4回を通して、wonderflで可能なこと、オープンになっているActionscriptコードを閲覧&forkしながらFlashを学習する方法についてご紹介しました。
今回ご紹介できなかったFlashの機能も、たくさんあります。FlashPlayer10から採用されているVector型、リアルタイム音声生成、ゲーム!などなど。これらは、実際にwonderflでチェックしてみてください。
wonderflのFlash開発者達が生み出すコードは、ユーザーページからfollowすることで自分のユーザーページにも表示されるほか、コードランキングやユーザーページのRSS等を使って追いかけることができます。
以上、4回にわたってwonderfl build onlineの世界をご紹介させていただきましたが、今後も、Flashに関するQ&Aなど機能強化を行いながら、フラッシュデベロッパーの採用コンテンツや、教育、出版など、他社とのコラボレーションも進めて行きたいと考えています。
wonderflをつかって試してみたいことがありましたら、お気軽にご連絡ください。
最後までお読みいただき、ありがとうございました。