メイン コーダーズルーム【スクリプト系】 デザインパターンの使いどころ | 投稿するにはまず登録を |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ペコ | Åê¹ÆNo.33077 投稿日時: 2007-4-20 19:37 |
新米 居住地: 埼玉一歩手前 投稿: 19
使用環境:
WinXP,Flash MX2004pro Flashout,ASDT,MTASC,Eclipse PDT |
Re: デザインパターンの使いどころ
|
miyaj | Åê¹ÆNo.32820 投稿日時: 2007-4-9 0:00 |
新米 居住地: 投稿: 13
使用環境:
Win7 FlashCS5 |
Re: デザインパターンの使いどころ 私も、これからGOFデザインパターンを勉強しようと考えているところです。
そこで、GOFデザインパターンを1から勉強する上で、 良い書籍やサイトがありましたら教えていただきたいです。 ちなみに、私はActionScriptとJavaScriptくらいしか使えません。 ActionScriptでは一応、独学と野中先生の「オブジェクト指向で考える・・・」 で勉強させていただき、クラスを作成してのスクリプティングは 一通り理解しているつもりです。 |
野中文雄 | Åê¹ÆNo.32709 投稿日時: 2007-3-31 3:17 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: デザインパターンの使いどころ 「Mix-in の概要」が参考になるでしょう。私のサイトでは、mix-inの例として、EventDispatcherクラス([*8])と ExternalContentクラス(「4. ExternalContentクラスの処理」)をごく簡単に紹介しています。
引用: ペコさんは書きました: |
橋本 亮介 | Åê¹ÆNo.32706 投稿日時: 2007-3-31 1:45 |
新米 居住地: 投稿: 6
使用環境:
|
Re: デザインパターンの使いどころ おんなじ様な感じですが、シングルトンでなくスタティックに実装することもできますよ。Mixed-inも同時に学べます。
フルスクリーンだと頻繁に左右上、左右下、の位置を算出しますが、いろいろなところでStageクラスにリスナー登録すると計算をいろいろなところに書かなければならないので一括でやってしまおうというクラスです。 import mx.events.EventDispatcher; class IndexWindowSize{ static private var l:Object; static private var sts:Object; static private var el:Object; static public function init(w:Number,h:Number){ if(!el){ el = new Object(); el.onResize = function(){ IndexWindowSize.setWindowSize(); } Stage.scaleMode = "noScale"; Stage.addListener(el); l = new Object(); EventDispatcher.initialize(l); } sts = {sW:Stage.width,sH:Stage.height,cW:w,cH:h}; sts.t = (sts.cH-sts.sH)/2; sts.r = sts.cW+(sts.sW-sts.cW)/2; sts.b = sts.cH+(sts.sH-sts.cH)/2; sts.l = (sts.cW-sts.sW)/2; } static public function addListener(o:Object):Void{ l.addEventListener("onResize",o); } static public function removeListener(o:Object):Void{ l.removeEventListener("onResize",o); } //status static public function setWindowSize():Void{ sts.sW = Math.max(Stage.width,sts.cW); sts.sH = Math.max(Stage.height,sts.cH); sts.t = (sts.cH-sts.sH)/2; sts.r = sts.cW+(sts.sW-sts.cW)/2; sts.b = sts.cH+(sts.sH-sts.cH)/2; sts.l = (sts.cW-sts.sW)/2; dispatch(); } static public function callEvent(o:Object){return o.onResize({type:"onResize",windowSize:sts});} static public function getWindowSize():Object{return sts;} static private function dispatch(id:Number){l.dispatchEvent({type:"onResize",windowSize:sts});} // } //--------------------------------------------------- 上記のクラスの使い方 必ずinitでステージの縦横を設定します。 IndexWindowSize.init(800,600); で、あらかじめ IndexWindowSize.addListener(this); そうすると this.onResize(sts:Object){ var o = sts.windowSize; trace([o.sW,o.sH]);//Stageの幅、高さ trace([o.t,o.b]);//上下のy座標 trace([o.r,o.l]);//左右のx座標 } ※ここではStageの幅と高さがもとのステージの大きさより小さくならないようにMath.maxするように設定しています。(そういう場合が多いので。。) さらにIndexWindowSize.callEvent(this); でthisだけにonResizeイベントが起こせます。これを使って初期設定ができます。 EventDispatcherを利用してStageクラスをラップした感じですね。 参考ください。 >>追記 イテレータはフラッシュの場合MCが入れ子になっているので、プログラムを使用しなくてもいいケースが多いから使いどころが見つからないんでしょうね。
|
ペコ | Åê¹ÆNo.32705 投稿日時: 2007-3-31 0:55 |
新米 居住地: 埼玉一歩手前 投稿: 19
使用環境:
WinXP,Flash MX2004pro Flashout,ASDT,MTASC,Eclipse PDT |
Re: デザインパターンの使いどころ せっかくなので僕がよく使うパターンを
残したいと思います。 稚拙なコードですがご勘弁を・・・・。 【Observerパターン】 ステージには ・halfWidth_mc ・halfHeight_mc 二つのムービークリップインスタンスを置きます。 それぞれのシンボルには ・HalfWidthクラス ・HalfHeightクラス をAS2.0クラスとしています。この二つのクラスは Observerインターフェイスを実装しています。 Stage.onResize()を取得するクラス(Subjectクラス) をSingletonパターンでつくり addObserver()メゾットでObserverを追加します。 addObserver()の引数の型をObserver型とします。 Subjectクラス(Subject.as)
Observerインターフェイス(Observer.as)
HalfWidthクラス(HalfWidth.as) HalfHeightクラス(HalfHeight.as)
ステージに置いた二つのMCが ステージの大きさを変更すると それぞれステージの高さ・幅の半分の大きさに変わります。 こうすると、Stageに関する記述が一箇所にまとめられ 便利です。 参考になれば幸いです。 |
ペコ | Åê¹ÆNo.32704 投稿日時: 2007-3-30 23:13 |
新米 居住地: 埼玉一歩手前 投稿: 19
使用環境:
WinXP,Flash MX2004pro Flashout,ASDT,MTASC,Eclipse PDT |
Re: デザインパターンの使いどころ >ながながいさん
やっぱり言語によって使いやすいパターン 使いづらいパターンってのがあるんでしょうかね? Interpreterパターンのつかいどころも判りません |
ペコ | Åê¹ÆNo.32703 投稿日時: 2007-3-30 23:07 |
新米 居住地: 埼玉一歩手前 投稿: 19
使用環境:
WinXP,Flash MX2004pro Flashout,ASDT,MTASC,Eclipse PDT |
Re: デザインパターンの使いどころ >橋本さん
引用:
mixed-in。。。なんだか知らない単語でびびってます。 インターフェイスとはちょっと違うようですね・・・。 勉強してみます。 ありがとうございました。 |
ながながい | Åê¹ÆNo.32640 投稿日時: 2007-3-25 23:12 |
半人前 居住地: 京都 投稿: 30
使用環境:
WindowsXP SP2, Flash CS3, Flash8 |
Re: デザインパターンの使いどころ 独学ではありますが、僕が使うのは↓↓ですかね。
って、ペコさんが挙げたのと全部同じですけど ■ Singleton インスタンスが1つだけであるときを保証したいとき、 例えば、重要なサーバー通信を行うインスタンス、に適用させてます。 簡単な具体例ですと、GoogleAnalyticsなどのアクセス解析に接続するクラスですね。 ■ Template Method 似て非なるMCシンボルを作るときに使ってます。 ベースは同じだけど、メソッドの細部が異なっていたり、とか。 ■ Observer 自作MCがイベントを配信するときに使います。 って、ふだんデフォルトのFlashのクラスでもたくさん使いますが ■ Mediator 複雑なボタンを管理するときに使ってます。 ユーザーインタフェース構築の時にうってつけかな?と思ってます。 ただ、わざわざクラス作って実装するのがめんどくさくて、 複数のボタンMCをまとめたMCを相談役としてます。 他のデザインパターンも使ってみたいんですが、なかなか難しいですね。 ちなみに僕はいまだに、Iteratorパターンの有効な使いどころがわかりません |
橋本 亮介 | Åê¹ÆNo.32611 投稿日時: 2007-3-23 21:52 |
新米 居住地: 投稿: 6
使用環境:
|
Re: デザインパターンの使いどころ SingletonはMVCでいうモデルによく使っています。
ObserverパターンはEventDispatcherクラスをmixed-inして使っています。非常に便利なので必ず利用します。 Mediatorは一度大きなプロジェクトに使用して失敗しているので嫌いです。 まぁ。具体的ではないですが。。
|
ペコ | Åê¹ÆNo.32525 投稿日時: 2007-3-16 23:37 |
新米 居住地: 埼玉一歩手前 投稿: 19
使用環境:
WinXP,Flash MX2004pro Flashout,ASDT,MTASC,Eclipse PDT |
デザインパターンの使いどころ せっかくoopなActionScriptなので、GOFデザインパターンの勉強中です。AS3は触ったことないのでAS2ですが・・・・。
皆さんにお聞きしたいのが、 ・このパターンはこんな場面に便利! ・このパターン無しではやっていけない! ・テキトーに組むとこのパターンになっちゃう などはありますでしょうか? 僕がよく使うのは ■Singleton ターゲットの階層を考えないで、ターゲットパスが取れる ■Template Method 「タブ」とか「ウィンドウ」とかある程度同じなんだけど 微妙に動作がちがう。その微妙さを作れる ■Observer(Mediator?) Stage.onResize()を通知するのに必ず使います。 こんなもんでしょうか・・・・・・・ と、ここまで書いて 具体例が必要かも・・・・・とか思うかも・・・ とにかくAS2におけるデザインパターンの 皆様の使い方を教えてください。 宜しくお願いします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |