flash on 2009-11-2

by kske
♥0 | Line 51 | Modified 2009-11-02 22:59:41 | MIT License
play

ActionScript3 source code

/**
 * Copyright kske ( http://wonderfl.net/user/kske )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/zsEm
 */

package {
    import flash.display.Sprite;
    import flash.display.*;
    import flash.events.*;

    public class FlashTest extends Sprite {
        private var spr1:Sprite;
        private var spr2:Sprite;
        private var spr3:Sprite;
        public function FlashTest() {
            // 表示用sprite用意
            spr1 = new Sprite();
            var g:Graphics = spr1.graphics;
            
            g.beginFill(0x222222, 1);
            g.drawRect(0, 0, 400, 400);
            g.endFill();
            
            spr2 = new Sprite();
            g = spr2.graphics;
            g.beginFill(0xff44ff, 1);
            g.drawRect(20, 0, 400, 400);
            g.endFill();

            spr3 = new Sprite();
            g = spr3.graphics;
            g.beginFill(0x3300ff, 1);
            g.drawRect(40, 0, 400, 400);
            g.endFill();
            
            stage.addChild(spr3);
            stage.addChild(spr2);
            stage.addChild(spr1);
            // sprite用意ここまで
            
            // EventListenerをアタッチ
            // spr1.addEventListener(MouseEvent.MOUSE_OVER, onMouseOverSpr1);
            spr2.addEventListener(MouseEvent.MOUSE_OVER, onMouseOverSpr2, false, 0, true);
            spr3.addEventListener(MouseEvent.MOUSE_OVER, onMouseOverSpr3, false, 0 ,true);
        }
        
        //各イベントリスナ
        
        //マウスオーバー関係
        
        //要らない子
        /*function onMouseOverSpr1(e:MouseEvent){
        }*/
        
        private function onMouseOverSpr2(e:MouseEvent):void{
            spr1.addEventListener(Event.ENTER_FRAME, onDrawSpr1, false, 0, true);
        }
        
        private function onMouseOverSpr3(e:MouseEvent):void{
            spr1.addEventListener(Event.ENTER_FRAME, onDrawSpr1, false, 0, true);
            spr2.addEventListener(Event.ENTER_FRAME, onDrawSpr2, false, 0, true);
            //先に下のオブジェクトにカーソルが乗った場合のために、
            //上のオブジェクト全てにEnterFrameのリスナーをつける
        }
        
        //エンターフレーム関係
        private function onDrawSpr1(e:Event):void{
            spr1.x += ((20 - spr1.width) - spr1.x)/10;
            
            if( Math.ceil(spr1.x) === Math.ceil(0 - spr1.width) ){
                removeEventListener(Event.ENTER_FRAME, onDrawSpr1);
                // 小数点処理の関係で、端数を切り上げて比較
                // 充分に目的地に近ければEnterFrameのリスナーを取り外す
                // 外さないと面倒なことになる。
            }
        }
        
        private function onDrawSpr2(e:Event):void{
            spr2.x += ((40 - spr1.width) - spr2.x)/10;
            
            if( Math.ceil(spr2.x) === Math.ceil(0 - spr2.width) ){
                removeEventListener(Event.ENTER_FRAME, onDrawSpr2);
                // 同上
            }
        }
    }
}