In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

スロットリールのようなもの2

スロットゲームを作ろう
3リール×21個の図柄を扱うリール系制御その1

21個の図柄を、3個の図柄を載せた画像×7とし、
それを順番に表示することで擬似的に回転しているようにみせる。
Get Adobe Flash player
by Nowloading_ 26 Apr 2011
    Embed
/**
 * Copyright Nowloading_ ( http://wonderfl.net/user/Nowloading_ )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/35D4
 */

// forked from ton_'s スロットリールのようなもの
//スロットゲームを作ろう
//3リール×21個の図柄を扱うリール系制御その1
//
//21個の図柄を、3個の図柄を載せた画像×7とし、
//それを順番に表示することで擬似的に回転しているようにみせる。
//
package {
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.Event;    
    [SWF(width=465, height=465, frameRate=15)]
    public class FlashTest extends Sprite {
        //リール画像格納用の配列
        private var pics:Array;
        //各for文に使用する変数
        //i=画像の個数=7とする
        private var i1:int;
        private var i2:int;
        private var istart:int = 0;
        private const i1Max:int = 3;
        private const i2Max:int = 7;    
        private var k:Array;
        private const kMax:int = i2Max-1;
        private var j:Array;
        private var jint:int;
        private const jMax:int=3;
        //画像の位置(pyは各画像のheight)
        private var px:int = 50;
        private var py:int = 180;
        //オリジナルクラス
        private var reelpic:reelPic;
        
        private var mode:int = 0;
        
        private var cover:Sprite;
        private var mc:Sprite;
        
        public function FlashTest() {
            init();
        }
        private function init():void{
            //擬似的リール枠(後に削除予定)
            graphics.lineStyle(1);            
            graphics.drawRect(30,py,370,py);
            
            cover = new Sprite();
            cover.graphics.beginFill(0xffffff);
            cover.graphics.drawRect(0,0,stage.width,stage.height);
            cover.graphics.endFill();
            stage.addChild(cover);
            
            mc = new Sprite();
            mc.graphics.beginFill(0xffffff);
            mc.graphics.drawRect(30,py,370,py);
            mc.graphics.endFill();
            cover.mask = mc;
            
            j=new Array();
            k=new Array();
            for(jint=0;jint<jMax;jint++){
                j[jint]=0;
                k[jint]=1;
            }

            
            //用意した配列に画像を入れ、
            //最初に表示する[1][0]以外の
            //.visible=false;にする
            pics = new Array();
            for(i1=0; i1<i1Max; i1++){
                pics[i1] = new Array();
                for(i2=0; i2<i2Max; i2++){
                    reelpic = new reelPic(py);
                    pics[i1][i2] = reelpic;
                    cover.addChild(pics[i1][i2]);
                }
            }
            for(i1=0; i1<i1Max; i1++){
                pics[i1][1].x = px+i1*120;
                pics[i1][1].y = 0;
                pics[i1][0].x = px+i1*120;
                pics[i1][0].y = py;
                for(i2=2; i2<i2Max; i2++){
                    pics[i1][i2].visible = false;
                }
            }
            //aEL
            stage.addEventListener(Event.ENTER_FRAME,onEnterFrame);
            stage.addEventListener(MouseEvent.CLICK,onMouseClick);
        }
        private function onEnterFrame(e:Event):void{
            for(i1=istart; i1<i1Max; i1++){
                if(k[i1]==0){
                    pics[i1][k[i1]].y += py/3;
                    pics[i1][kMax].y += py/3;
                }else{
                    pics[i1][k[i1]].y += py/3;
                    pics[i1][k[i1]-1].y += py/3;
                }
                j[i1]+=1;
            }
            for(i1=istart; i1<i1Max; i1++){
                if(j[i1]>=3){
                    if(k[i1]>=kMax){
                        pics[i1][0].x=px+120*i1;
                        pics[i1][0].y=0;
                        pics[i1][kMax].x=px+120*i1;
                        pics[i1][kMax].y=py;
                    
                        pics[i1][kMax-1].visible = false;
                        pics[i1][0].visible = true;
                        k[i1]=0;
                        j[i1] = 0;
                    }else {
                        if(k[i1]==0){
                            pics[i1][k[i1]+1].x=px+120*i1;
                            pics[i1][k[i1]+1].y=0;
                            pics[i1][k[i1]].x=px+120*i1;
                            pics[i1][k[i1]].y=py;
                            pics[i1][kMax].visible = false;
                            pics[i1][k[i1]+1].visible = true;
                            k[i1]+=1;
                        }else{
                            pics[i1][k[i1]+1].x=px+120*i1;
                            pics[i1][k[i1]+1].y=0;
                            pics[i1][k[i1]].x=px+120*i1;
                            pics[i1][k[i1]].y=py;
                            pics[i1][k[i1]-1].visible = false;
                            pics[i1][k[i1]+1].visible = true;
                            k[i1]+=1;
                        }
                        j[i1] = 0;
                    }
                }else{
                    
                }
 
            }      
        }
        private function onMouseClick(e:MouseEvent):void{
            if(istart <=3){
                istart +=1;
                if(istart == 3){
                    stage.removeEventListener(Event.ENTER_FRAME,onEnterFrame);
                }

            }else{
                stage.addEventListener(Event.ENTER_FRAME,onEnterFrame);
                istart=0;
            }

            
        }

    }
}

import flash.display.Sprite;
class reelPic extends Sprite{
    public function reelPic(y:int){
        for(var i:int = 0; i<3;i++){
            var c:uint = Math.random()*0xffffff;
            graphics.beginFill(c);            
            graphics.drawRect(0,i*y/3,100,y/3);
            graphics.endFill();
        }

    }
}