package {
    import flash.display.*;
    import flash.geom.*;
    import flash.text.*;
    import flash.events.*;
    import flash.ui.*;

    
    //↑↓←→で表示されたビットマップを移動させる
    public class BitmapMove extends Sprite {
        //リソース
        [Embed(source='bbb.gif')]
        private var Image0:Class;
        private var image0:Bitmap;

        //変数
        public static const KEY_LEFT:int           =37;
        public static const KEY_UP:int             =38;
        public static const KEY_RIGHT :int         =39;
        public static const KEY_DOWN:int           =40;

        private var g:JGraphics;
        private var label:TextField;//ラベル
        private var posX:int;//X座標
        private var posY:int;//Y座標

        //コンストラクタ
        public function BitmapMove() {
            //リソース
            image0 =new Image0();
            
            //グラフィックス
            g=new JGraphics(320,320);
            addChild(new Bitmap(g.getBitmapData()));
            
            //背景の描画
            g.setColor(g.getColorOfName(JGraphics.WHITE));
            g.fillRect(0,0,320,320);

            //初期座標設定
            posX = 0;
            posY = 0;            
            
            //イメージの描画
            g.setColor(g.getColorOfName(JGraphics.BLUE));
            g.fillRect(0,0,320,320);
            g.drawImage(image0,posX*32,posX*32);

            //ラベルの追加
            label=makeLabel("キーイベント");
            addChild(label);

            //イベントリスナーの追加
            addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
            addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
            addEventListener(MouseEvent.CLICK,clickHandler);  

        }

        //キーダウンイベントの処理
        private function keyDownHandler(evt:KeyboardEvent):void {
            if (evt.keyCode == KEY_LEFT) {
                if (posX > 0) {
                    posX -= 1;
                }
            } else if (evt.keyCode == KEY_UP) {
                if (posY > 0) {
                    posY -= 1;
                }
            } else if (evt.keyCode == KEY_RIGHT) {
                if (posX < 9) {
                    posX += 1;
                }
            } else if (evt.keyCode == KEY_DOWN) {
                if (posY < 9) {
                    posY += 1;
                }
            }

            g.setColor(g.getColorOfName(JGraphics.BLUE));
            g.fillRect(0,0,320,320);
            label.text = "keyCode:" + evt.keyCode;
            g.drawImage(image0,posX*32,posY*32);
        }

        //キーアップイベントの処理
        private function keyUpHandler(evt:KeyboardEvent):void {
        }

        //マウスクリックイベントの処理
        private function clickHandler(evt:MouseEvent):void {
            //フォーカス
            stage.focus;
        }

        //ラベルの生成
        private function makeLabel(text:String):TextField {
            var label:TextField=new TextField();
            label.text      =text;
            label.autoSize  =TextFieldAutoSize.LEFT;
            label.selectable=false;
            return label;
        }
    }
}