TechHUB:Flash1:05:ENTER_FRAME

by yprops forked from TechHUB:Flash1:04:MouseEvent (diff: 57)
♥0 | Line 87 | Modified 2011-03-26 18:28:15 | MIT License
play

ActionScript3 source code

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

// forked from yprops's TechHUB:Flash1:04:MouseEvent
package {
    import flash.text.*;
    import flash.display.*;
    import flash.events.*;
    public class FlashTest extends Sprite {
        
        /*
        
        */
        
        
        //変数-------------------------------
        private var myText :TextField;
        private var ositene :Sprite;
        private var children :Array;
        private var count :int;
        
        
        //コンストラクタ-----------------------
        public function FlashTest() {
            stage.frameRate = 5;
            count = 0;
            initOutput();
            makeOsitene();
        }
        
        
        //メイン処理--------------------------
        private function makeOsitene() :void{
            var i :int;
            var sp :Sprite;
            
            ositene = new Sprite();
            addChild(ositene);
            ositene.x = 100;
            ositene.y = 200;
            
            // Spriteインスタンスに イベントリスナー設定
            ositene.addEventListener(
                Event.ENTER_FRAME,
                onOsiteneUpdate
            );
            
            // Spriteインスタンスに イベントリスナー設定
            ositene.addEventListener(
                MouseEvent.CLICK,
                onOsiteneClick
            );
            
            //children = new Array();
            children = [];
            for( i = 0; i < 10; i++){
                sp = makeSprite();
                sp.x = Math.random() * 100 - 50;
                sp.y = Math.random() * 100 - 50;
                ositene.addChild(sp);
                children.push(sp);    //chldren 配列の一番後ろにspを追加
            }
        }
        private function onOsiteneClick(event:MouseEvent) :void{
            this.removeChild(ositene);
            ositene.removeEventListener(
                Event.ENTER_FRAME, onOsiteneUpdate
            );
            ositene.removeEventListener(
                MouseEvent.CLICK, onOsiteneClick
            );
            ositene = null;
            children = null;
        }

        
        
        
        
        
        //イベントハンドラメソッド---------------------
        private function onOsiteneUpdate(event:Event) :void{
            var i :int;
            var sp :Sprite;
            
            //ositeneを横移動
            ositene.x = ositene.x + 5;
            if(ositene.x > 300){
                ositene.x = 100;
            }
            //children に記憶したもの全てを適当に移動
            for(i = 0; i < children.length; i++){
                sp = children[i] as Sprite;
                sp.x = Math.random() * 100 - 50;
                sp.y = Math.random() * 100 - 50;
                sp.scaleX = Math.random() * 0.2 + 0.8;
                sp.scaleY = sp.scaleX;
            }
            renewOutput(event.type);
            count++;
        }
        
        
        //その他メソッド-----------------------
        
        private function makeSprite() :Sprite{
            var sp :Sprite = new Sprite();
            var gra :Graphics = sp.graphics;
            gra.beginFill(0, 0.5);
            gra.drawRect(-50, -50, 100, 100);
            gra.endFill();
            return sp;
        }

        private function initOutput() :void{
            myText = new TextField();
            myText.width = 400;
            myText.height = 40;
            myText.border = true;
            addChild(myText);
        }
        private function renewOutput(message :String) :void{
            myText.text = "再生回数:" + count + "\n" + message;
        }

        
    }
}