Mediator パターン (付記)
2009/01/06 21:34 - デザインパターン
Mediator パターンを使うと以下のような変動するマウスストーカーもスッキリとしたコードで記述することができます。
ステージには3×3=9個のボタンがタイル状に敷き詰められています。
各ボタンの中央には、黒い丸が設置されています。真ん中のボタンが最初に選択されているボタンで、色が濃い灰色になっています。
その真ん中のボタン以外のボタンを押すと、そのボタンに応じた動きで、黒い丸によるマウスストーキングが始まります。
┌─┬─┬─┐ │1│2│3│ ├─┼─┼─┤ │4│5│6│ ├─┼─┼─┤ │7│8│9│ └─┴─┴─┘
仮に上記のとおりボタン番号を振ると、各ボタンを押すしたときの黒い丸の動きは以下のようになります。
- easein
- 重力アトラクタ
- 落下
- 右壁面アトラクタ
- 静止
- 左壁面アトラクタ
- easeout
- 反重力アトラクタ
- ランダム
このサンプルの Mediator は以下の二つのことをしています。
まずは前回説明した、同じボタンを連続して押せない及びボタン全部でトグルになっているというボタンインスタンスの連携ですね。
もう一つは、押されたボタンは自分に振られたユニークな番号を Mediator に通達するんですが、Mediator はその番号をマウス追随シェイプに投げます。 それによりマウス追随シェイプはその動きを変えるのです。 そのようなボタンインスタンスとマウス追随シェイプインスタンスの連携もおこなっています。
以下にサンプルソースを掲示しますが、このソースはひとつ問題があります。
- ソース (2.85KB)
このサンプルの見栄えや動きは「FLASH-FACTORY」という本に掲載されているサンプルのパクリです、といっても完コピではありませんが。 オリジナルは AS1 で書かれており、私は AS3.0 でコーディング。
書籍のサンプルソースは同封の CD-ROM にのみ収録されているものであり、出版社のサイトでダウンロードできたりはしません。
なので、ここで提示しているサンプルは、あくまでも Mediator の使い方の事例ということで、一部コードを意図的に削除している部分があることをご了承ください。
削除箇所は FollowShape.as(マウス追随シェイプ) の motion メソッドの各挙動と、そこから呼ばれるメソッド全部です。
なお、オリジナルサンプルの動きは、私のヘボいパクリサンプルの100倍はクールです。 見惚れちゃいますよ。
興味のある方は「FLASH-FACTORY」を入手なさってみてはいかがでしょうか。