宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > AS2与AS3技术

[AS3]as3下随机延迟效果

2016-10-13 00:16:48 点击量:15 标签: 收藏本文

利用timer计时器或者时间轴上动画的安排,可以实现在一定延迟后出现某个动画的效果。不过这种延迟是事先安排好的,时间的长短固定。要实现随机延迟,就一定要用到Math.random()方法和配套方法。例如在上面的例子中:

设置了一个变量:var starTime:int=100;//随机延迟的基数。这个基数可以随意设置,但是如果数字很大,那么产生随机延迟产生的最大延迟会很大,产生长时间延迟的次数会增多。

在设置基数之后,在执行动画效果之前加一个判断,当在 0-基数 之间产生指定的值时,才能执行下面的代码,就可以产生一定的延迟,但是由于使用了random()方法,所以长短随机,可能很快产生指定值,可能很慢产生 指定值,也可能多次调用不产生一次指定值。此外,影响这一方法的另一个重要因素是帧频的设置,不同的帧频,延迟的长短也有不同。

例如:

  1. //当前帧频为36fps 
  2. this.addEventListener(Event.ENTER_FRAME,onLiuStarMove); 
  3. function onLiuStarMove(e:Event):void{ 
  4. if(Math.floor(Math.random()*starTime)==0){ 
  5. var l:StarFm=new StarFm(); 
  6. l.x=Math.random()*areaWidth; 
  7. ll.scaleX=l.scaleY=Math.random()*1; 
  8. l.rotation=Math.random()*-80; 
  9. this.addChild(l); 

在这里,一般把指定值设定为整数(0或者starTime的值)。那么Math.random()所产生的值是0-0.9999...的数字,需要对其进行取整。但是用Math.round()和Math.floor()的效果是有区别的:

Math.round()是四舍五入,因此如果出现大于或等于0.5的情况,会进位,那么产生0或者starTime的机会会变少。动画效果产生的率会因此降低。

Math.floor()是舍去小数,因此产生0或者starTime的机会会变多。动画效果产生的频率会提高。

ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室