FLASHギミックの仕組み

なにか別の話を、という事で、たまにこちらにたどり着く検索が有るのでFLASHの話を。ついでにカテゴリも作りました。

まずこちらの動画

の解説http://dic.nicovideo.jp/v/nm6049209の中間「ギミック解説」を参照して欲しいのですが。「ダブルラリアット」には一時停止することで現れるFLASHギミックが多数あります。この手法の説明など。


FLASHのシステムの中に「スプライト」というものが有るのは以前書きましたが、改めて説明すると
FLASHというのは、画像の表示・透過・移動。それら全てのタイミングをプログラムされたデータ」
なのですが、ここ↑でいう「画像」は「一枚の静止画像」だけの事を言うのではなく、「動く画像」の事も含むのです。この、動くのに「画像」扱いされるのが「スプライト」です。


・・えーと、これでは分かりにくいと思うんですが、先日UPした「Funny Bunny」で言うと、冒頭のバックで噛み噛み動いてたり、その後走ってるバスター君がそうです。FLASHのプログラムの中に「簡単なGIFアニメ」を置いてるといえば分かり易いでしょう・・が、それだけでは終わりません。
スプライトは「簡単なGIFアニメ」以上の複雑な扱いが出来ます(後述しますが、基本的に「FLASH動画に仕込めることは、スプライトにも同じく仕込める」のです)


「止めても動く」というコメント・タグがありましたが、「止めても動く」のが「スプライト」です。スプライトはFLASHのメインデータの時間の流れ(タイムライン)からは独立したアニメなので、メインのデータが止まろうと、どんな複雑なアニメをしようと、自分の動きが影響されることが無いのです(一枚の画像の扱いなので、スプライトを置いたのと同じ深度に別の画像を割り込ませると、その時点で消すことは出来ます)
※(「Funny Bunny」動画のアウトロ部分で、バスター君が左に走ってゆく場面を止めると「左に走る」のはその場で止まりますが「走る動き」は止まりません。これは「走る動き」はスプライトの中の動きなものの、「左に走れ」という命令がスプライト画像そのものへの命令=メインのタイムラインからの命令で為されているからです)
(ダブルラリアットで言うと、止めても「スプライト」のルカは回ってるけど背景の回ってた円‐恐らく画像への「回転」指定‐は止まる)


そして、この「スプライト」は「ひとつの画像扱い」でありながら、そもそものFLASHのプログラムをそのまま使えます。「スプライト」の中で「スプライト」を扱う事も出来ます。
例えば、ひとつの5分アニメのような、それだけでも結構な大作データをFLASHの機能を駆使して作ったとします。これをそのままスプライトにしてしまいます。そうして、メインのタイムラインに「TV番組を観ている部屋」のアニメを作り、TVの画面にさっきのスプライトを垂れ流すことが出来ます。「しかも、違う番組を4画面で」「更にTVの中でもTV見てる」みたいな複雑な事も出来ます。

ニコ動にある「再生しないでも動く」FLASH動画も、このシステムを利用しています。ニコ動では、FLASHデータの一番最初の画像(もしくは、データ上で指定した画像)
が再生前画像として表示される仕様なのですが、この「指定画像」をスプライトにしてしまえばいいのです(できるのです)。


で、冒頭の「ダブルラリアット」の「停止して待つと本来とは別のアニメが現れる」手法ですが。
これは、つまり「"始めの100秒間透明な画像だけでなにも起こらず、100秒後からキャラが現れる"そういうスプライトを用意する。そして、そのスプライトをメインのタイムラインでは100秒以下しか表示されないよう設定しておく(普通に見てても出ないようにするための処置)」事で表現できます。これで、停止して100秒待つか、あるいは20秒間停止して再生すると20秒分スプライトのアニメだけが進行していたため、本データとずれた事で80秒後にキャラが現れるのです。



合わせ技で、ごく普通に動画を作ったうえで「一見普通の停止画像だけど、300秒待つと始まるスプライト(といえども、全く遜色ない動画)」を「開始画像」に設定すれば、運良く五分間放置してたヒトしか気づかない動画が作れますね(もうありそう)。