homeへのリンクです。

flashでAmazonECS 15

2006年08月22日

とりあえずここまでのところは、AS2.0からAS3.0に移行できた。

view.swf

クラスの構成は以下のようになる。

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のパッケージは使えない。

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で簡単に管理できる。
といった点が注意点だろうか。