ただ見上げるより この手を伸ばしてみたくなるだけ (ポコアポコ/カヒーナムジカ)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

 みなせ氏から色々と気遣ってくれるメールをもらったけれども,修羅場にかまけて華麗にスルー状態。ごめんなさい。

 さて,ヴィジュアルリプレイ作りのノウハウ的なメモ書き。
 「コンポーネントの活用が大事だ」と言う話。

 今回ヴィジュアルリプレイを創りはじめる時,コンポーネントなる存在は意識の中に完全にありませんでした。
 もちろん,「そいつを使えば,アクションスクリプトを知らない人でも簡単にインタラクティブなフラッシュを作れる」という説明書きは随分前に読んでいました。
 ただ,出来合いのコンポーネントはデザインセンスがmilk女史と大幅に異なっているので,ヴィジュアルリプレイで役に立つことはなかろう,と思っていたのですね。
 さらにアクションスクリプトを知っている以上,もうコンポーネントについて勉強する必要はないかな,とも思っていたのは事実で。
 というわけで,完全に意識外だったんですねぇ。
 ところがところが。意外な威力を発見。
 コンポーネントと言うのは,基本的にはムービークリップと同じなんですね。
 ただ「スクリプトを使わなくても,値を中にセットできる」という違いがあります(他にも違いが少しありますが)。しかも配置された時に,自動的にセットしてくれる。
 この「自動的にセットしてくれる」のがとてもありがたいのです。
 何故かと言うと,ヴィジュアルリプレイには「巻き戻しボタンがある」からです。

 通常のムービークリップの場合,値をスクリプトでセットしなくてはなりません。
 ステータスをムービークリップで作ると,現在のHPやMPなどの値は,スクリプトでセットすることになります。
 これが頭から終わりまで一方向に進むフラッシュの場合,ステータスが変化したところで,現在値をセットすれば済みます。
 しかし,「巻き戻しボタン」で戻ってくると問題が発生します。
 例えば4ページ目でダメージを受けて,HPが30点から20点に減少した場合。
 頭から読んでいけば,4ページ目でHPが20点に減ります。
 しかしそこで巻き戻しボタンを押して3ページに戻ると,HPは元の30点ではなく,20点のままなのです(笑)。
 これは,通常のムービークリップが「値を変える」という指示をしない限り,値を変えてくれないためです(当たり前ですが)。
 HPを変化させろと言う指示は4ページ目でしか出されておらず,3ページ目にはありません。だからHPは3ページに戻っても20点なのですね。

 従って,3ページ目に「HPを30にする」という指示を書き込まない限り,正常に読めなくなる訳です。(この指示は,正順で読んでいる時には,意味を成さない指示になります)
 しかしスクリプトを書く量は2倍になりますね。
 (アニメーションの内容によっては3回セットすることもあります)

 さらにセーブ機能をつけた時,全部の変数をいちいち保存し,ロード時に読み込む必要があります。
 割と問題なのがセーブのタイミングと変数変更のタイミングがずれていて,ロード時にムービークリップの表示が変になることですね。セーブ機能をつける時に,「この変数がこのタイミングで変化しているから,値をセーブし直して…」とか考えるの,まあ嫌いじゃないですが,時間がかかります。
 (もっともこれは自動セーブシステムになっているから発生する問題なのですが。ただ手動セーブに変えるには,変数を全部メインタイムラインに集約するとか,構造を根本的に変えなきゃならないっぽいので,それはそれで面倒でやめたんですよね)。

 コンポーネントの良いところは,このあたりの手間を減らせることです。
 F6ボタンを一つ押して,キーフレームさえ入れておけば,巻き戻しした時も前に進んだ時も,コンポーネントに値が自動的にセットされます。
 スクリプトを二回書く必要はないですし,そもそもスクリプト書かなくて済みます(笑)。
 「あれ,HPを変更する関数名は何だったかな?」とか「二つ目の引数には何を入れるんだったかな?」とか調べなくていいのも良いですね。

 さらに,アクションスクリプトの知識があまり無い人でも,フラッシュを知っている人ならば,ヴィジュアルリプレイを容易に作れるようにできるかも知れません。
 手間レベルではなく知識レベルでのヴィジュアルリプレイ作成の簡易化は,課題として上げられてはいました。しかし方法があまり思いつかなかったので,事実上棚上げになっていました。
 コンポーネントを上手い形で用意すれば,十二分に可能になりそうですね。


 …とは言うものの,現状,作ってあるパーツの半分ぐらいが,この運用をすることに耐える作りにはなっていないのですね。
 夏が終わったら作り直そうかなぁ,と思案中です。


追記を閉じる▲
 コンポーネントと言うのは,基本的にはムービークリップと同じなんですね。
 ただ「スクリプトを使わなくても,値を中にセットできる」という違いがあります(他にも違いが少しありますが)。しかも配置された時に,自動的にセットしてくれる。
 この「自動的にセットしてくれる」のがとてもありがたいのです。
 何故かと言うと,ヴィジュアルリプレイには「巻き戻しボタンがある」からです。

 通常のムービークリップの場合,値をスクリプトでセットしなくてはなりません。
 ステータスをムービークリップで作ると,現在のHPやMPなどの値は,スクリプトでセットすることになります。
 これが頭から終わりまで一方向に進むフラッシュの場合,ステータスが変化したところで,現在値をセットすれば済みます。
 しかし,「巻き戻しボタン」で戻ってくると問題が発生します。
 例えば4ページ目でダメージを受けて,HPが30点から20点に減少した場合。
 頭から読んでいけば,4ページ目でHPが20点に減ります。
 しかしそこで巻き戻しボタンを押して3ページに戻ると,HPは元の30点ではなく,20点のままなのです(笑)。
 これは,通常のムービークリップが「値を変える」という指示をしない限り,値を変えてくれないためです(当たり前ですが)。
 HPを変化させろと言う指示は4ページ目でしか出されておらず,3ページ目にはありません。だからHPは3ページに戻っても20点なのですね。

 従って,3ページ目に「HPを30にする」という指示を書き込まない限り,正常に読めなくなる訳です。(この指示は,正順で読んでいる時には,意味を成さない指示になります)
 しかしスクリプトを書く量は2倍になりますね。
 (アニメーションの内容によっては3回セットすることもあります)

 さらにセーブ機能をつけた時,全部の変数をいちいち保存し,ロード時に読み込む必要があります。
 割と問題なのがセーブのタイミングと変数変更のタイミングがずれていて,ロード時にムービークリップの表示が変になることですね。セーブ機能をつける時に,「この変数がこのタイミングで変化しているから,値をセーブし直して…」とか考えるの,まあ嫌いじゃないですが,時間がかかります。
 (もっともこれは自動セーブシステムになっているから発生する問題なのですが。ただ手動セーブに変えるには,変数を全部メインタイムラインに集約するとか,構造を根本的に変えなきゃならないっぽいので,それはそれで面倒でやめたんですよね)。

 コンポーネントの良いところは,このあたりの手間を減らせることです。
 F6ボタンを一つ押して,キーフレームさえ入れておけば,巻き戻しした時も前に進んだ時も,コンポーネントに値が自動的にセットされます。
 スクリプトを二回書く必要はないですし,そもそもスクリプト書かなくて済みます(笑)。
 「あれ,HPを変更する関数名は何だったかな?」とか「二つ目の引数には何を入れるんだったかな?」とか調べなくていいのも良いですね。

 さらに,アクションスクリプトの知識があまり無い人でも,フラッシュを知っている人ならば,ヴィジュアルリプレイを容易に作れるようにできるかも知れません。
 手間レベルではなく知識レベルでのヴィジュアルリプレイ作成の簡易化は,課題として上げられてはいました。しかし方法があまり思いつかなかったので,事実上棚上げになっていました。
 コンポーネントを上手い形で用意すれば,十二分に可能になりそうですね。


 …とは言うものの,現状,作ってあるパーツの半分ぐらいが,この運用をすることに耐える作りにはなっていないのですね。
 夏が終わったら作り直そうかなぁ,と思案中です。

【2007/07/31 13:17】 | 天地未だ形れざるとき
トラックバック(0) |
コメント
この記事へのコメント
コメントを投稿
URL:

Pass:
秘密: 管理者にだけ表示を許可
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。