Ano2ch.スクリプトとUIの分離

5 月 29, 2007 on 10:16 am | In Ano2ch |

それもこれもAVM1Movieが悪いんです。
なんでもありません。

この記事の対象読者は不明ですが、仕方のない事です。


 

問題:
あなたはAS2.0のクラスが100個くらい入ってるゲームを作っています。
それはほとんどのグラフィックを外部のswfから読み込みますが、
一部のグラフィックはいろいろな事情によりライブラリに入っています。
パブリッシュのたびにシンボルが書き出されるのは遅いので、
あなたはASとグラフィックを別のファイルに分けようと考えました。
あなたならどう実現しますか?
なお、ASとグラフィック要素は完全に分離されているものとします。
(つまり、フレームアクションとかクリップアクションとかは
 一切使ってないものとします。)

 

回答1:
最初に開く『main.swf』にASを全部書く。
グラフィックを『共有ライブラリから読み込み』する事により、
外部の『graphics.swf』から読み込む。

共有ライブラリという機能は確かに
仕様が決まってれば使いこなせれば強力ですし、
容量の大きなサウンドを外部のファイルから読み込むように、
グラフィックも外部のファイルに移してしまうのは分かりやすいです。

しかしこの方法だと、ライブラリに何か追加しようと思った時は
『graphics.swf』のライブラリを編集する事になると思います。
ところで、最初に読み込まれるファイルは『main.swf』。
ASがアクセスできるライブラリも『main.swf』のものなので、
結局『as.swf』のライブラリも編集する事になってしまいました。
仕様が最初から決まってる時ならともかく、
作りながら仕様を決めるような場合はライブラリを変更するたびに
両方のswfファイルを再パブリッシュしなければならなくなります。
ファイルを分けた意味がなさすぎますね。

 

というわけで、逆にしてみます。

回答2:
最初に開く『main.swf』にグラフィックを全部入れる。
ASは『as.swf』に入れる。

どうやって『as.swf』の中身をロードするんでしょうか。
クラスを読み込むのに共有ライブラリも使えないし・・・

構わず『as.swf』をloadMovieすれば問題ありません。
頭の悪い解決方法でしたが、動いたのでよしとします。
(ファイルを読み込むことによってクラス定義が読み込まれますが、
 読み込まれたクラス定義はグローバル変数に格納されるので
 メインのタイムラインからアクセスできてしまいます。)
編集しなければならないライブラリも1カ所になったので、
『as.swf』は大手を振ってMTASCか何かででっち上げましょう。
めでたしめでたし。

 

時代はAS3.0な中AS2.0の話はどうみても時代遅れですが、
例えば他の外付けのswfファイルがAS2.0用だったりする場合は
ゲームエンジンはAS2.0で作るしか選択肢がないのです。
それは、AS3.0用のswfからAS2.0用のswfを外部読み込みすると
機能がものすごい勢いで制限される
gotoAndStop()すら、正攻法では不可能なのは正直勘弁
限り、どうしようもない問題なのです。
AS2.0用のswfをAS3.0用のswfに変換するソフトが作れればよいのですが、
苦労して作っても実用にも向かないものにしかならないと思うのです。
(万が一できちゃったら嬉しい)

 

注:非常にまぎらわしいですが、
これはAno2chの現在の作業状況以外の何物でもありません。

No Comments yet »

このコメント欄の RSS フィード TrackBack URI

コメントをどうぞ

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^