メイン コーダーズルーム【スクリプト系】 デザインパターンの使いどころ | 投稿するにはまず登録を |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
dyosuke | Åê¹Æ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が入れ子になっているので、プログラムを使用しなくてもいいケースが多いから使いどころが見つからないんでしょうね。
|
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
デザインパターンの使いどころ | heroes | 2007-3-16 23:37 |
Re: デザインパターンの使いどころ | dyosuke | 2007-3-23 21:52 |
Re: デザインパターンの使いどころ | heroes | 2007-3-30 23:07 |
Re: デザインパターンの使いどころ | Fumio | 2007-3-31 3:17 |
Re: デザインパターンの使いどころ | naganagai | 2007-3-25 23:12 |
Re: デザインパターンの使いどころ | heroes | 2007-3-30 23:13 |
Re: デザインパターンの使いどころ | heroes | 2007-3-31 0:55 |
» Re: デザインパターンの使いどころ | dyosuke | 2007-3-31 1:45 |
Re: デザインパターンの使いどころ | miyaj | 2007-4-9 0:00 |
Re: デザインパターンの使いどころ | heroes | 2007-4-20 19:37 |
投稿するにはまず登録を | |