どういう形で持つかというところから始める。
もちろん、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