スロットリールのようなもの2
スロットゲームを作ろう
3リール×21個の図柄を扱うリール系制御その1
21個の図柄を、3個の図柄を載せた画像×7とし、
それを順番に表示することで擬似的に回転しているようにみせる。
/**
* 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();
}
}
}