リール回転用

by Nowloading_ forked from 改 [オブジェクトの再作成]噴水 (diff: 59)
スロットゲームを作ろう。第二弾。
このコードだとマウスクリックで全リールとまってしまい、各リールごとに止められない。
♥0 | Line 99 | Modified 2011-04-15 00:50:24 | MIT License
play

ActionScript3 source code

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

// forked from ton_'s 改 [オブジェクトの再作成]噴水
// forked from ton_'s [オブジェクトの再作成]噴水
// forked from ton_'s 領域外に出たスプライトの削除
package {
    import flash.events.MouseEvent;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    
    public class Removal extends Sprite{
        private var count:int=9;
        private var balls:Array; 
        private var gravity:Number = 1.6;
        private var wind:Number = -0.2;
        //領域の設定
        private var top:Number = -150;
        private var bottom:Number = 465;
        private var left:Number = 50;
        private var right:Number =365;
        //_mode
        private var mode:int = 0;
        //balls
        private var ball:Ball;
        
        public function Removal(){
            init();
        }
        private function init():void{
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            balls = new Array();
            for(var i:int=0;i<count;i++){
                var color:uint = Math.random()*0xff0000;
                ball = new Ball(12,color);
                if(i<3){
                    ball.x = (right-left)/3*(i+1);               
                }else if(i>=3 && i<6){
                    ball.x = (right-left)/3*(i-2);  
                }else{
                    ball.x = (right-left)/3*(i-5)
                }

 
                ball.y = top+m;
                ball.vy = 1;
                addChild(ball);
                balls.push(ball);
                if(i==2){
                    var m:int = 150;
                }else if(i==5){
                    m = 300;
                }


            }
            addEventListener(Event.ENTER_FRAME,onEnterFlame);
            stage.addEventListener(MouseEvent.CLICK, onMouseClick);
        }
        private function onEnterFlame(e:Event):void{
            for(var i:Number=0;i<balls.length;i++){
                var ball:Ball = Ball(balls[i]);
                var y:Number = -ball.y+bottom;
                if(ball.vy<20){
                    ball.vy+=gravity;
                }                
                ball.y+=ball.vy;
                if(ball.y-ball.radius>bottom ||
                ball.y+ball.radius<top){
                    if(i<3){
                        ball.x = (right-left)/3*(i+1);               
                    }else if(i>=3 && i<6){
                        ball.x = (right-left)/3*(i-2);  
                    }else{
                        ball.x = (right-left)/3*(i-5)
                    }
                    ball.y = top;
                }
            }
        }
        private function onMouseClick(e:MouseEvent):void{
            if(mode==0){
                removeEventListener(Event.ENTER_FRAME,onEnterFlame);
                for (var i:int =0; i<count; i++){
                    balls[i].vy=0;
                }
                mode =1;
            }else{                
                addEventListener(Event.ENTER_FRAME,onEnterFlame);
                mode=0;
            }

        }

    }
}

import flash.display.Sprite;
    class Ball extends Sprite{
        public var radius:Number;
        public var color:uint;
        public var vx:Number =0;
        public var vy:Number =0;
        
        public function Ball(radius:Number = 40,color:uint = 0xff0000){
            this.radius = radius;
            this.color = color;
            init();
        }
        public function init():void{
            graphics.beginFill(color);
            graphics.drawCircle(0,0,radius);
            graphics.endFill();
        }
    }
        

Forked