FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

小ネタ ストレージのコンテナ化

とあるHPでhactの話題が出てましたので、小ネタを1つ。
私も最初の頃hactタグの応用例の「メッセージ履歴をクリックしたときに実行する TJS 式を生成する」関数の意味が分からずえらく頭を抱えました。
その時に思いついた物ですが、ストレージをコンテナ化すれば作業が楽じゃないだろうか?と言う単純な発想です。
結論から言えば、「マクロでやった方が楽」でしたが、まぁ吉里吉里はこう言う事も出来るんだよとおつきあいください。
まず下記をご覧ください。


@iscript
f.音楽_top = 'kag.bgm.stop(),kag.bgm.play(%[storage:"';
f.音楽_und = '",loop:true])';
f.音楽_mid = [];
//------この中に配列登録------
f.音楽_mid[0] = '無音.wav';
f.音楽_mid[1] = '曲1.wav';
f.音楽_mid[2] = '曲2.wav';
f.音楽_mid[3] = '曲3.wav';
f.音楽_mid[4] = '曲4.wav';
f.音楽_mid[5] = '曲5.wav';
//----------------------------
f.音楽 = [];
for(var i=0 ;i < f.音楽_mid.count ;i++)
{
f.音楽[i] = f.音楽_top + f.音楽_mid[i] + f.音楽_und;
}
@endscript


//音楽を鳴らす実行タグ(例では曲1が流れます)
[eval exp="&f.音楽[1]"]


何をやらせてるのかと言うと、kag.bgm.stop(),kag.bgm.play(%[storage:"曲目",loop:true])と言う文字列をf.音楽[x]に入れて、それを[eval exp="&f.音楽[x]"]で評価して鳴らしています。
一見するとフラグに何か無意味な事をさせてるだけのように見えるのですが、f.音楽[x]の中に前奏を止め新しい曲をループで流すコマンドがすべてパッケージングされてますので、そのフラグの中身を評価して実行――つまり音が鳴るわけです。
配列ですから、f.音楽_mid[]の配列の後ろを書き換えて追加すればいくらでも増やせます。
もちろんCG等にも応用が出来ますし、tjsで制御可能なほとんどのコマンドをパッケージング出来ます。

このコンテナ化の利点は、まずスッキリ見えるため初心者が組むにも設定だけ誰かがしてあげれば簡単にコピペで組めてしまう事。
はめ込むだけですので、CGだろうと音楽だろうと同じレベルで取り扱い出来ると言うのは初心者には大きな利点です。
また逆に、一見するとフラグに何かしてるだけのように見えるためフラグ名を偽装すればスクリプトを覗こうとした人がちょっと見では意味不明に見える事でしょうか。
反面、融通が利かないと言う欠点があります。
それは文字列の中に変数を組み込む事で解決する問題ではありますが、それではコンテナ化した意味が薄れてある意味本末転倒ではあります。

追記20110217a

《修正》
loopの位置指定が間違ってましたので修正しました。

コメントの投稿

非公開コメント

プロフィール

和人@Light Works

Author:和人@Light Works
九州の片田舎福岡で活動するソロプロジェクト『Light Works』の雑記ブログです。
主にゲームシナリオ・吉里吉里・after effectsに関係する話を中心に書きたいと思います。
シナリオ・演出・その他おもしろいお仕事募集中です。
スパム対策にメールは非公開ですので、コメントの方に非公開コメントでお願い致します。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。