トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     デザインパターンの使いどころ
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
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が入れ子になっているので、プログラムを使用しなくてもいいケースが多いから使いどころが見つからないんでしょうね。


----------------
--
Dyo

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   デザインパターンの使いどころ 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

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops