slot水果机抽奖思路

创建一个数组,数组里把所有的奖项按顺序里面,这个数组可命名为
rewardArr,数组里面放每个奖项对应的显示对象。
根据mvc的思想,所见非所得,每次刚点下抽奖按钮的时候,就给他随机出一个奖品,然后在随机一个转的圈数

接下来是滚动的显示,滚动就用TweenMax去解决,他里面有各种加速减速曲线,具体在用的时候,
var rewardArr:Array = [a,b,c,d,e,f.....];
var redLightArr:Array = [n,n,n,n,n.....];
var duration:int = 8;//转动的时间
var rounds:int = 5; //转动的圈数
var rewardIndex:int = 10;//转完圈数后加10得到抽奖结果
var lastEndIndex:int = 0;//上次转动停止的点设置为0

//圈数*页面上奖项的数量+rewardIndex    
var endIndex:int =rounds *rewardArr.length +rewardIndex   ;//抽奖结果所在的index
var startIndex:int =lastEndIndex; //从这里开始转


var sprite:Sprite = new Sprite();//一个无关的但是必须用的变量,每次都new一个吧,
sprite.x = startIndex;//把这个变量的属性x设成startIndex,因为接下来我们要用tweenMax控制它变化


//tweenMax里面的参数意义
//sprite 为当前控制的对象   duration为tweenMax持续时间 {}里面为详细参数,x为要在duration时间内,把sprite 的x属性变为endIndex,onUpdate属性为他每次更改一下sprite x属性的时候执行的一个方法,onupdateparams是onupdate执行的时候,要传入的参数
TweenMax.to(sprite,duration,{x:endIndex, onUpdate:onUpdateHandle, onUpdateParams :[sprite.x], ease:"easeOut"} );
function  onUpdateHandle(args:Array):void
{
     int currentIndex = (int)args[0];
     currentIndex = currentIndex %rewardArr.length;
     target = rewardArr[currentIndex];
     redLightArr[currentIndex];
}
 
onUpdateHandle这个方法

tweenMax在执行的时候,他会去更改我们new出来的那个sprite的x值,他会在duration时间内,把sprite的x改变成我们{}里面写的那个x

在改变的过程中,他会不断的调用onUpdateHandle()方法,并把当前的sprite的x值传入这个方法

也就是 target = rewardArr[currentIndex];  这样,就取到了当前移动到的那个位置

target就是当前选到的那个水果

在执行tweenMax.To方法的时候,他的这个target就会慢慢的从最开始的,变到最后选中的那个

而且有减速的效果

得到target后,再去得到target下面的红点?

详细解释:我们在创建rewardArr的时候,可以创建一个与他一一对应的数组,叫redLightArr,里面存的每一个元素都是红点

那么在onUpdate方法里,有了currentIndex,那么我们就可以通过redLightArr[currentIndex]取到红点了
 
 function void onUpdateHandle(args:Array)
{
     int currentIndex = redBall.x;
     currentIndex = currentIndex %rewardArr.length;
    Displayobject target = rewardArr[currentIndex];
}

这段代码,我们可以得到当前要跳到那个节点的index了

这个就是那个tweenMax,把一个数字变化到另一个数字,变化过程中,每一帧执行的一个update函数

这个函数会告诉我们,这会儿这个数字变成什么了

可以用一个全局变量去保存那个红点的sprite

然后在update的时候,去改变sprite的位置
原文地址:https://www.cnblogs.com/woyaofei303/p/5086925.html