どういう形で持つかというところから始める。
もちろん、objectとして持つので、グラフィックスをもてる形でもつのは当然として、
ページがあったり、レイヤーがあったりするので、そこらへんの階層をどう考えるかだね。
データ上の階層と表示やGUI上の階層は一致させる必要がないけど、
たいがい、一致させとかないと、バグる元。
ってことで、FLASH(FLEXではなく)でやってたときは、
movieClipかSpriteでなんでもかんでもやってたんだけど、
FLEXではSpriteはそのまま使えないから、UIComponentでやることになるのかな。
それが最良かどうかは、やってみないとわからないので、
とりあえず、それで、POLYや画像を表示させたり、編集したりとかしてみて判断しよう。
ということで、ポリを書いてみることにする。
順を追うと、、こんな感じでテスト。
●UIComponentを継承した基本クラスを作る。
●その基本クラスをExtendsした、item用のクラスを作る。
●itemを動的に生成して、その中のgraphicsにポリを入れてみる。
●mouseDown-Move-Upに対応させて移動させてみる。
ここで、随分前にちょっと書いた、mouseイベントを最下層で拾うクラスを仕込んでみる。
要するに、
★itemにMouseDonwがくる
↓
★最下層Mouseイベント用クラスの、MouseDown/Up/Moveイベントを、
itemのpublic関数に持ってくるように設定する。
↓
★itemにMouseDonwがくる
↓★処理をしたあと、イベントの転送先を削除する
で、基本クラス。
public class spBase extends UIComponent{ public var mother:Object; //-------------------- function spBase(){ } //-------------------- public function init(f:Object):void{ mother = f; this.addEventListener(Event.REMOVED_FROM_STAGE, removed); //------------------- // MouseDown //------------------- var own:Object = this; this.addEventListener(MouseEvent.MOUSE_DOWN, function (e:MouseEvent):void{ mother.app.getKAM().setMAll(own.fd,own.fu,own.fm,own.fo); } ); } //-------------------- protected function fd(e:MouseEvent):void{ trace("Down\n"); } protected function fu(e:MouseEvent):void{ trace("Up\n"); mother.app.getKAM().setMClear(); } protected function fm(e:MouseEvent):void{ trace("Move "); } protected function fo(e:MouseEvent):void{ trace("Over "); } //-------------------- // like a destructer //-------------------- private function removed(e:Event):void{ removeEventListener(Event.REMOVED_FROM_STAGE, removed); } }
で、itemクラスの雛形。
public class spItem extends soul.spBase{ override protected function fd(e:MouseEvent):void{ trace("spItem::Down\n"); } override protected function fu(e:MouseEvent):void{ trace("spItem::Up\n"); mother.app.getKAM().setMAll(null,null,null,null); } override protected function fm(e:MouseEvent):void{ trace("spItem::Move "); } override protected function fo(e:MouseEvent):void{ trace("spItem::Over "); } }
で、呼ぶ時。motherは、MXMLでのthisを渡している。。(-_-;)
testobj = new soul.spItem(); testobj.init(mother);//mother:MXMLのthis