2010年5月8日土曜日

ActionScript | AsWing JFrame

AsWingのJFrameを使用したシンプルな例です。
これは
JFrame
  |- JPanel
        |- JTextField
        |- JButton
という入れ子状態にする必要があるようです。
JButtonに対するイベントは、標準のEventのほかにActionを用いることもできますが 、今回は標準のMouseEventです。
また、AsWingのコンポーネントで色を指定する場合は、16進数カラー値とアルファ値の組み合わせであるASColor型のデータを使用する必要があります。
他に注目したいことといえば、いずれもWindowsしか確認してませんけど、FireFoxでもInternetExprolerでも同じ表示、同じ動作になっているクロスプラットフォーム性です。HTML5は確かにFlashのような機能をサポートしていくと思いますが、複数の再生環境で同じ表示、同じ動作になるかどうかはまた別の問題です。


サンプルの表示



 【Source】
package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import Date;
    import flash.display.Graphics;
    //AsWing
    import org.aswing.SoftBoxLayout;
    import org.aswing.JFrame;
    import org.aswing.JPanel;
    import org.aswing.JTextField;
    import org.aswing.JButton;
    import org.aswing.ASColor;
   
    /**
     * ...
     * @author N.Lab
     */
    public class Main extends Sprite
    {
        public var frame : JFrame;
        public var panel : JPanel = new JPanel(new SoftBoxLayout(SoftBoxLayout.Y_AXIS));
        public var tfDate : JTextField = new JTextField("");
        public var btnNewDate:JButton = new JButton("New Date");
       
        public function Main():void
        {
            graphics.beginFill(0x999999, 1);
            graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
            graphics.endFill();
           
            stage.addEventListener(MouseEvent.CLICK, _onStageClick);
           
            tfDate.setSizeWH(200,20);
            tfDate.x = 10;
            tfDate.y = 10;
            tfDate.setBackground(new ASColor(0xFFFFFF,1));
            tfDate.setText(String(new Date()));
           
            btnNewDate.setSizeWH(200,20);
            btnNewDate.x = 220;
            btnNewDate.y = 10;
            btnNewDate.addEventListener(MouseEvent.CLICK, _onSaveClick);
           
            panel.append(tfDate);
            panel.append(btnNewDate);
            panel.visible = true;
           
            frame = new JFrame( this, "Date" );
            frame.setContentPane(panel);//panel:JPanelにappendしたものを、frame:JFrameに入れ込み
            frame.x = 50;
            frame.y = 50;
            frame.pack();
            frame.show();   
        }
       
        private function _onStageClick(e:MouseEvent):void
        {//×ボタンでframe:JFrameがHideになった場合、ステージクリックで表示させる。
            frame.show();
        }
        private function _onSaveClick(e:MouseEvent):void
        {
            tfDate.setText(String(new Date()));
        }
    }
 }

制作・©:のぼる/N.Lab