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

パスワード:


パスワード紛失

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

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
heroes
Åê¹ÆNo.32705
投稿日時: 2007-3-31 0:55
新米
居住地: 埼玉一歩手前
投稿: 19
使用環境:
Re: デザインパターンの使いどころ
せっかくなので僕がよく使うパターンを
残したいと思います。
稚拙なコードですがご勘弁を・・・・。

【Observerパターン】
ステージには
・halfWidth_mc
・halfHeight_mc
二つのムービークリップインスタンスを置きます。
それぞれのシンボルには
・HalfWidthクラス
・HalfHeightクラス
をAS2.0クラスとしています。この二つのクラスは
Observerインターフェイスを実装しています。

Stage.onResize()を取得するクラス(Subjectクラス)
をSingletonパターンでつくり
addObserver()メゾットでObserverを追加します。
addObserver()の引数の型をObserver型とします。

Subjectクラス(Subject.as)

class Subject
{
  private static var instance:Subject = null;

  private var observers:Array = new Array();

  public static function getInstance():Subject
  {
    if (instance == null) {
      instance = new Subject();
    }

    return instance;
  }

  private function Subject()
  {
    Stage.align     = "TL";
    Stage.scaleMode = "noscale";
    Stage.addListener(this);
  }

  public function onResize():Void
  {
    var observers:Array = this.observers;
    var length:Number = observers.length;
    var w:Number = Stage.width;
    var h:Number = Stage.height;
    for (var i:Number = 0; i < length; i++) {
      observers[i].update(w, h);
    }
  }

  public function addObserver(observer:Observer):Void
  {
    this.observers.push(observer);
  }
}


Observerインターフェイス(Observer.as)

interface Observer
{
  public function update(w:Number, h:Number):Void;
}


HalfWidthクラス(HalfWidth.as)
HalfHeightクラス(HalfHeight.as)

class HalfHeight extends MovieClip implements Observer
{

  public function HalfHeight()
  {
    var subject:Subject = Subject.getInstance();
    subject.addObserver(this);
  }

  public function update(w:Number, h:Number):Void
  {
    var halfHeight:Number = Math.floor(h / 2);

    this._height = halfHeight;
  }
}

class HalfWidth extends MovieClip implements Observer
{

  public function HalfWidth()
  {
    var subject:Subject = Subject.getInstance();
    subject.addObserver(this);
  }

  public function update(w:Number, h:Number):Void
  {
    var halfWidth:Number = Math.floor(w / 2);

    this._width = halfWidth;
  }
}


ステージに置いた二つのMCが
ステージの大きさを変更すると
それぞれステージの高さ・幅の半分の大きさに変わります。

こうすると、Stageに関する記述が一箇所にまとめられ
便利です。

参考になれば幸いです。
フラット表示 前のトピック | 次のトピック

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