とりあえずここまでのところは、AS2.0からAS3.0に移行できた。
クラスの構成は以下のようになる。
classes/column/Column.as
classes/column/WindowColumn.as
classes/layout/LayoutManager.as
classes/layout/GridLayout.as
classes/layout/DataGridLayout.as
classes/layout/Layout.as
classes/xml/ParseAmazonXML.as
classes/xml/LoadAmazonXML.as
classes/main/Main.as
classes/loadbar/LoadBar.as
classes/area/DisplayArea.as
classes/area/WindowArea.as
flash9はalpha版なのであまり重要な話ではないのかも知れないが、コンポーネントが使えない。
スクリプトでも、mxから始まるAS3.0のパッケージは使えない。
AS2.0で使っていたwindowコンポーネントが、いまのところAS3.0では使えない。
AS2.0のときの、view.swf
そこで、仕方なく自前でパネルのようなものを作っている。
public function myWindow(posx:Number,posy:Number,sizew:Number,sizeh:Number){ mywindow=new WindowArea(); mytarget.addChild(mywindow); mywindow.x=posx; mywindow.y=posy; mywindow.scaleX=sizew/100; mywindow.scaleY=sizeh/100; title=new TextField(); title.height=20; mywindow.addChild(title); mywindow.addEventListener(MouseEvent.ROLL_OVER,rollOn); mywindow.addEventListener(MouseEvent.ROLL_OUT,rollOff); mywindow.addEventListener(MouseEvent.MOUSE_DOWN,windowStartDrag); mywindow.addEventListener(MouseEvent.MOUSE_UP,windowStopDrag); } public function rollOn(eventObj:Event):void{ rollflg=true; } public function rollOff(eventObj:Event):void{ rollflg=false; } public function windowStartDrag(eventObj:Event):void{ if(rollflg){ mytarget.setChildIndex(mywindow,mytarget.numChildren-1); mywindow.startDrag(false, new Rectangle(0,0,mytarget.width-mywindow.width,mytarget.height-mywindow.height)); } } public function windowStopDrag(eventObj:Event):void{ mywindow.stopDrag(); } override public function setID(idstr:String):void{ mynodeid=idstr; } override public function setName(nstr:String):void{ title.text=nstr; }
シンボルとして、100x100の白四角をドロップシャドウつきで準備しておいて、scaleで調整している。
(グラフィックツールなのに、スクリプトで絵を描くのには抵抗がある。)
ドラッグのエリアをRectangleで指定することになっている。
MCの重なり順は、setChildIndexで簡単に管理できる。
といった点が注意点だろうか。