标签:
创建一个数组,数组里把所有的奖项按顺序里面,这个数组可命名为
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的位置
slot水果机抽奖思路
标签:
原文地址:http://www.cnblogs.com/woyaofei303/p/5086925.html