カテゴリー
Develop 未分類

MAX補足#2(FlashへのMVCの導入)

何故を導入するか?
的な部分の実装時間を短縮することで、表現(グラフィック、モーション)のクオリティを詰める時間を確保する。
が第一の目的です。
その他にも
・スクリプトコードの見通しを良くする。
・デバッグ負荷の軽減
・複数人での作業分担時におけるアップ
など効果はありますが、それらも結果として成果物のクオリティを上げる時間を確保することです。
なのでMVCを導入することで逆に時間を浪費してしまうような場合には
MVCの導入に固執することなく、さっさと割り切って違う方法での実装を行うことをお勧めします。
ということでこの前提をの隅に置いていただいて
FlashへのMVCへの適応の概要を書いておきます。


前のエントリーで一般的なMVCの概要についてのリソースを掲載しましたが、実際問題としてそのままFlashに持ってくるのは経験上難しいと思っています。
3年ほどあれやこれやと試した経験上、Flash自体MovieClip単位でシーンやダイアログの制御を行うことが可能なので、その部分を踏襲した形での導入が一番シンプルになると考えています。
mvc01.jpg
Flashに組み込む際にはMVCそれぞれの役割を以下のようにしています。
CTRL(Controller)

ユーザ入力によるムラインやシーン遷移を
ここを起点にしてView,Modelを操作します。

MODEL

とのデータのやり取りを管理。
また受信したデータ、Flash内におけるデータセットなどの管理。

VIEW

Ctrlクラスから命令を受け、ドキュメントルートにおけるMovieClip(シーン)の制御、および管理を行う。

図の中央に書いてある”singleton”という表現は他の言語とはちょっと意味合いが違うのですが、独自の機能を持った一意のMovieClipクラス(例えばナビゲーションとして機能するMovieClipなど)と捉えてください。
そしてCTRLから命令を受けたVIEWはドキュメントルートレベルでのSingletonを制御しますが、そのSingleton内部で行われるそれぞれのスクリプトはその後各Singleton内部で制御されます。このSingleton内部でもMVC構造を持つのか?という質問をされることがありますが、これはケースバイケースです。労力の少ない方で実装すればよいかと・・。
この考え方は特に目新しいものではなく、クラスを使用していない記述方法でも、各MovieClipの中にスクリプトを記述することで同じような形で実装されている方は多いと思います。基本的には各瑣末の制御を分離することで各クラスの記述も簡素化され、複数人での作業分担負荷も軽減されます。CTRLやMODELと連動しなければ別個のSWFとして独自開発も可能になります。複数人での作業などの効率化についてはまた追って書いていきますが、今回はとりあえずFlashにおけるMVCの役割の概要まで・・・。
追記:MVという考え方について。
これまでMVCという3つの要素の仕組みについて記述していますが、簡単な構造であればMVという考え方も可能です。実際CTRLで担っている役割をVIEWに持たせることはさほど苦ではありません。ただ複雑な遷移や、細かいモーションを含む画面遷移(時間制御)等を行う場合などは各SingletonからのコールバックなどをVIEWが受ける、ユーザからの入力をCTRLが受けるという風に区分しないとデバッグなどの際に負荷が増えるケースが多いかと思います。

「MAX補足#2(FlashへのMVCの導入)」への2件の返信

CtrollerはControllerではないでしょうか? 違ってたらごめんなさい。
複数人での作業などの効率化もすごく興味があるので、時間のある時で構いませんので、記事を書いていただくのを楽しみにしておきます。

ギャボー。
そうです。
スペルミスです。
いつもctrlって略してしまうので間違えました・・ってそれとも違うけど・・・汗
直しておきますw

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です