我想创造一种老虎机。 我用Google搜索并找到了一个示例代码。
import com.greensock.*;
import com.greensock.easing.*;
var blitMask1:BlitMask = new BlitMask( strip1, strip1.x, strip1.y,
strip1.width, 100, true, true, 0xffff00, true);
spin_btn.addEventListener(MouseEvent.CLICK, spin);
function spin(event:MouseEvent):void {
spin_btn.visible = false;
var newNumber:Number = (randomNumber(0, 9) * 100) + 1200;
TweenMax.to(strip1, 1, {y:String(newNumber), onComplete:showBtn});
}
function showBtn() {
spin_btn.visible = true;
}
function randomNumber(min:Number, max:Number):Number {
return Math.floor(Math.random() * (1 + max - min) + min);
}
舞台上有一个名为strip1的对象有10个孩子。在虚拟老虎机停止后,有没有办法找出舞台上的哪个号码(孩子)?
换句话说,对象有一个补间方法,我想知道补间后它的位置是什么。
答案 0 :(得分:2)
我最近开发了一台老虎机。我确信有很多方法可以做到这一点,但这就是我这样做的方式。必须为每个卷轴完成此操作
在你的blitmask中通常可以看到三个符号。如果您的blitmask是一个符号高,那么此方法将为您提供可见符号
首先声明一个变量来跟踪中心符号
我定位了我的条带,以便第3个符号位于blitmask窗口的中心,记住这不是索引
基本上你知道它将要落在哪里,所以你可以在它落地之前找出符号是什么。
var REEL1:Number = 3;
function spin(event:MouseEvent):void
{
var newNumber:Number = (randomNumber(1, 10)) ;
//call function to find the symbol to land
REEL1 = GetReelPosition(REEL1, newNumber);
//work out the amount to tween. Random number * symbol height + strip length
//if you want a longer spin add more strip lengths
newNumber = (newNumber * 100) + 1000;
var myTimeline:TimelineMax = new TimelineMax();
myTimeline.append(new TweenLite(Strip1, 2, {y:String(newNumber)}));
//get target symbol as movieclip
var currentTile:MovieClip = Strip1.getChildAt(REEL1-1) as MovieClip;
//if you have export for actionscript, this will tell what the object is
trace(String(currentTile));
}
创建条带时,从图像中创建符号,导出动作脚本然后从上到下添加到条带中。如果更改符号,则必须再次从上到下删除并粘贴。索引反映了符号的添加顺序。
function GetReelPosition(reel:Number,num:Number):Number
{
reel = reel - num;
switch(reel)
{
//if symbol is the first number on the strip and random
//number = 1 (1-1) then the centre symbol is the last on the strip
case 0:
reel = 10;
break;
//if symbol is the first number on the strip and random
//number = 10 (1-10) then the centre symbol is the first on the strip
case 1:
case -9:
reel = 1;
break;
case 2:
case -8:
reel = 2;
break;
case 3:
case -7:
reel = 3;
break;
case 4:
case -6:
reel = 4;
break;
case 5:
case -5:
reel = 5;
break;
case 6:
case -4:
reel = 6;
break;
case 7:
case -3:
reel = 7;
break;
case 8:
case -2:
reel = 8;
break;
//case 9, -1:
case 9:
case -1:
reel = 9;
break;
}
return reel;
}
我更新了切换代码。案例9,-1:不可靠。我不确定我从那个语言中选择了哪种语言。
这是我的第一个flash项目,我很快就完成了这个老虎机。我确信有更好的方法可以做到这一点。看看我的插槽?
http://rcras.com/pokies/funnyfarm
答案 1 :(得分:1)
使用类变量来跟踪当前可见的元素。
您可以使用TweenMax的 onCompleteParams 参数传递所需的数字。这将在 onComplete 处理程序中提供。在补间完成(老虎机停止)时设置变量。
///...
var selectedChildIndex:Number = -1;
function spin(event:MouseEvent):void {
spin_btn.visible = false;
var newNumber:Number = (randomNumber(0, 9) * 100) + 1200;
TweenMax.to(strip1, 1, {y:String(newNumber),
onComplete:showBtn, onCompleteParams:[1]});
}
function showBtn(index) {
spin_btn.visible = true;
selectedChildIndex = index;
}