forked from: リール回転用2

by koshitarou forked from リール回転用2 (diff: 1)
♥0 | Line 114 | Modified 2012-03-30 10:08:50 | MIT License
play

ActionScript3 source code

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

// forked from ton_'s リール回転用2
// forked from ton_'s リール回転用
// 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 slotPre0 extends Sprite{
        //多次元配列の個数
        private var i:int;
        private var iMax:int = 3;
        private var j:int;
        private var jMax:int = 5;
        //3リール分の重力値
        private var gravity:Number=2;
        private var g:Array;
        //リールストップ用変数
        private var k:int = 0;
        //多次元配列
        private var reels:Array; 
        //領域の設定
        private var top:Number = -150;
        private var bottom:Number = 465;
        private var left:Number = 50;
        private var right:Number =365;
        //図柄代わりのボール
        private var ball:Ball;        
        
        public function slotPre0(){
            init();
        }
        
        private function init():void{
        
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            
            g= new Array();
            for(var a:int=0; a<jMax; a++){
                g[a] = gravity;
            }
            
            reels = new Array();
            for(i=0; i<iMax; i++){
                reels[i] = new Array()
                for(j=0; j<jMax; j++){
                    var color:uint = Math.random()*0xff0000;
                    ball = new Ball(12,color);
                    ball.x = (right-left)/3*(i+1); 
                    ball.y = (bottom-top)/jMax*j;
                    ball.vy = 1;
                    addChild(ball);
                    reels[i][j] = ball;                    
                }
            }
            addEventListener(Event.ENTER_FRAME,onEnterFlame);
            stage.addEventListener(MouseEvent.CLICK, onMouseClick);
        }
        private function onEnterFlame(e:Event):void{
            for(var x:int =0;x<iMax; x++){
                for(var y:int=0; y<jMax; y++){
                    var reel:Ball = Ball(reels[x][y]);
                    if(reel.vy<42){
                        reel.vy+=g[i];                        
                    }
                    reel.y+=reel.vy;
                    if(reel.y - reel.radius>bottom){
                         reel.y = top;
                    }
                    reels[x][y] = reel;        
                }
            }
        }
        private function onMouseClick(e:MouseEvent):void{
        switch(k){
            case 0:   
                     
                for(j=0; j<jMax; j++){
                    
                    reels[0][j].vy = 0;                                       
                }
                g[0] = 0;           
                k = 1;
                break; 
                
            case 1:            
                for(j=0; j<jMax; j++){
                    
                    reels[1][j].vy = 0;                    
                }
                g[1] = 0;
                k = 2;
                break; 
                
            case 2:            
                for(j=0; j<jMax; j++){
                    
                    reels[2][j].vy = 0;                    
                }
                g[2] = 0;
                removeEventListener(Event.ENTER_FRAME,onEnterFlame);    
                k = 3;
                break; 
                
            case 3:            
                for(var a:int=0; a<jMax; a++){
                    g[a] = gravity;
                }
                k = 0;                
                stage.addEventListener(Event.ENTER_FRAME,onEnterFlame);
                break; 
                
            default:
            }                               
        }
    }
}


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();
        }
    }