2016-10-13 00:16:48 点击量:15 标签: 收藏本文
利用timer计时器或者时间轴上动画的安排,可以实现在一定延迟后出现某个动画的效果。不过这种延迟是事先安排好的,时间的长短固定。要实现随机延迟,就一定要用到Math.random()方法和配套方法。例如在上面的例子中:
设置了一个变量:var starTime:int=100;//随机延迟的基数。这个基数可以随意设置,但是如果数字很大,那么产生随机延迟产生的最大延迟会很大,产生长时间延迟的次数会增多。
在设置基数之后,在执行动画效果之前加一个判断,当在 0-基数 之间产生指定的值时,才能执行下面的代码,就可以产生一定的延迟,但是由于使用了random()方法,所以长短随机,可能很快产生指定值,可能很慢产生 指定值,也可能多次调用不产生一次指定值。此外,影响这一方法的另一个重要因素是帧频的设置,不同的帧频,延迟的长短也有不同。
例如:
- //当前帧频为36fps
- this.addEventListener(Event.ENTER_FRAME,onLiuStarMove);
- function onLiuStarMove(e:Event):void{
- if(Math.floor(Math.random()*starTime)==0){
- var l:StarFm=new StarFm();
- l.x=Math.random()*areaWidth;
- ll.scaleX=l.scaleY=Math.random()*1;
- l.rotation=Math.random()*-80;
- this.addChild(l);
- }
- }
在这里,一般把指定值设定为整数(0或者starTime的值)。那么Math.random()所产生的值是0-0.9999...的数字,需要对其进行取整。但是用Math.round()和Math.floor()的效果是有区别的:
Math.round()是四舍五入,因此如果出现大于或等于0.5的情况,会进位,那么产生0或者starTime的机会会变少。动画效果产生的率会因此降低。
Math.floor()是舍去小数,因此产生0或者starTime的机会会变多。动画效果产生的频率会提高。
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室