とりあえずここまでのところは、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で簡単に管理できる。
といった点が注意点だろうか。