·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3的一下随机函数工具类(很好用的随机)(2)

时间:2017-07-13 17:49网络
importindex.base.func.random; trace(random.boolean+(随机一个布尔值)); trace(random.color()+(随机一个rgb颜色值)); trace(random.color(153-255,0-100,0-100)+(随机一个偏红的rgb颜色值)); trace(random

  1. import index.base.func.random; 
  2.  
  3. trace(random.boolean+"(随机一个布尔值)"); 
  4. trace(random.color()+"(随机一个rgb颜色值)"); 
  5. trace(random.color("153-255","0-100","0-100")+"(随机一个偏红的rgb颜色值)"); 
  6. trace(random.wave+"(随机一个波动值)"); 
  7. trace(random.string()+"(随机一个字符)"); 
  8. trace(random.integer(4)+"(随机一个int值)"); 
  9. trace(random.number(4)+"(随机一个number值)"); 
  10. trace(random.string("a-z,a-z")+"(在一个范围随机字符)"); 
  11. trace(random.string("我,你,他")+"(在一个范围随机中文字符)"); 
  12. trace(random.ranges(5,4,3,-1,-10,-14,true)+"(在多个指定范围随机数值)"); 
  13. trace(random.range(4,9)+"(在一个指定范围随机数值)"); 
  14. trace(random.bit(8)+"(随机一个八位的字符串)"); 
  15. trace(random.bit(16,"0-1")+"(随机一个十六位的二进制)"); 
  16. trace("…………") 
  17.  
  18. //生成一个偏红的颜色色块 
  19. var sh:shape = new shape(); 
  20. var rgb:uint = random.color("204-255","0-153","0-153"); 
  21. trace(rgb1.tostring(16)); 
  22. sh.graphics.beginfill(rgb); 
  23. sh.graphics.drawrect(100,100,100,100); 
  24. addchild(sh); 
  25.  
  26. //生成一个颜色偏深或者偏淡的颜色色块 
  27. var sh1:shape = new shape(); 
  28. var rgb1:uint = random.color("0-20,240-255","0-20,240-255","0-20,240-255"); 
  29. trace(rgb1.tostring(16)); 
  30. sh1.graphics.beginfill(rgb1); 
  31. sh1.graphics.drawrect(200,100,100,100); 
  32. addchild(sh1); 
  33.  
  34. /** 
  35. * 输出: 
  36. * false(随机一个布尔值) 
  37. * 8370486(随机一个rgb颜色值) 
  38. * 12322387(随机一个偏红的rgb颜色值) 
  39. * -1(随机一个波动值) 
  40. * e(随机一个字符) 
  41. * 3(随机一个int值) 
  42. * 1.0007172282785177(随机一个number值) 
  43. * m(在一个范围随机字符) 
  44. * 我(在一个范围随机中文字符) 
  45. * -14(在多个指定范围随机数值) 
  46. * 5(在一个指定范围随机数值) 
  47. * idpjav1l(随机一个八位的字符串) 
  48. * 1010100101010100(随机一个十六位的二进制) 
  49. * ………… 
  50. * dd5506 
  51. * fef003 
  52. */ 

类文件:

  1. package index.base.func{ 
  2.         
  3.         public final class random{ 
  4.                 
  5.                 public function random(){ 
  6.                         throw new error("随机函数工具包无法实例化!"); 
  7.                 } 
  8.                 
  9.                 //获取一个随机的布尔值 
  10.                 public static function get boolean():boolean{ 
  11.                         return boolean(integer(2)); 
  12.                 } 
  13.                 
  14.                 //获取一个正负波动值 
  15.                 public static function get wave():int{ 
  16.                         return integer(2) * 2 - 1; 
  17.                 } 
  18.                 
  19.                 //获取一个随机的范围整数值 
  20.                 public static function integer(num:number):int{ 
  21.                         return math.floor(number(num)); 
  22.                 } 
  23.                 
  24.                 //获取一个随机的范围number值 
  25.                 public static function number(num:number):number{ 
  26.                         return math.random() * num; 
  27.                 } 
  28.                 
  29.                 //在一个范围内获取一个随机值,返回结果范围:num1 >= num > num2 
  30.                 public static function range(num1:number,num2:number,isint:boolean = true):number{ 
  31.                         var num:number = number(num2 - num1) + num1; 
  32.                         if(isint) num = math.floor(num); 
  33.                         return num; 
  34.                 } 
  35.                 
  36.                 //在多个范围获取随机值 
  37.                 public static function ranges(...args):number{ 
  38.                         var isint:boolean = args[args.length - 1] is boolean ? args.pop() : true; 
  39.                         var num:number = randomrange(args); 
  40.                         if(!isint) num += math.random(); 
  41.                         return num; 
  42.                 } 
  43.                 
  44.                 //获取一个随机字符,默认随机范围为数字+大小写字母,也可以指定范围,格式:a-z,a-h,5-9 
  45.                 public static function string(str:string = "0-9,a-z,a-z"):string{ 
  46.                         return string.fromcharcode(randomrange(explain(str))); 
  47.                 } 
  48.                 
  49.                 //生成指定位数的随机字符串 
  50.                 public static function bit(num:int,str:string = "0-9,a-z,a-z"):string{ 
  51.                         var restr:string = ""
  52.                         for(var i:int = 0; i < num; i ++) restr += string(str); 
  53.                         return restr; 
  54.                 } 
  55.                 
  56.                 //获取一个随机的颜色值 
  57.                 public static function color(red:string = "0-255",green:string = "0-255",blue:string = "0-255"):uint{ 
  58.                         return number("0x" + transform(randomrange(explain(red,false))) + 
  59.                                                                  transform(randomrange(explain(green,false))) + 
  60.                                                                  transform(randomrange(explain(blue,false)))); 
  61.                 } 
  62.                 
  63.                 //将10进制的rgb色转换为2位的16进制 
  64.                 private static function transform(num:uint):string{ 
  65.                         var restr:string = num.tostring(16); 
  66.                         if(restr.length != 2) restr = "0" + restr; 
  67.                         return restr; 
  68.                 } 
  69.                 
  70.                 //字符串解析 
  71.                 private static function explain(str:string,iscodeat:boolean = true):array{ 
  72.                         var argar:array = new array; 
  73.                         var tmpar:array = str.split(","); 
  74.                         for(var i:int = 0; i < tmpar.length; i ++){ 
  75.                                 var ar:array = tmpar[i].split("-"); 
  76.                                 if(ar.length == 2){ 
  77.                                         var ararpush0:string = ar[0]; 
  78.                                         var ararpush1:string = ar[1]; 
  79.                                         if(iscodeat){ 
  80.                                                 arpush0arpush0 = arpush0.charcodeat().tostring(); 
  81.                                                 arpush1arpush1 = arpush1.charcodeat().tostring(); 
  82.                                         } 
  83.                                         //此处如果不加1,将不会随机ar[1]所表示字符,因此需要加上1,随机范围才是对的 
  84.                                         argar.push(number(arpush0),number(arpush1) + 1); 
  85.                                 }else if(ar.length == 1){ 
  86.                                         var ararpush:string = ar[0]; 
  87.                                         if(iscodeat) arpusharpush = arpush.charcodeat().tostring(); 
  88.                                         //如果范围是1-2,那么整型随机必定是1,因此拿出第一个参数后,把范围定在参数+1,则就是让该参数参加随机 
  89.                                         argar.push(number(arpush),number(arpush) + 1); 
  90.                                 } 
  91.                                 ar = null
  92.                         } 
  93.                         tmpar = null
  94.                         return argar; 
  95.                 } 
  96.                 
  97.                 //获取随机范围 
  98.                 private static function randomrange(ar:array):number{ 
  99.                         var tmpar:array = new array; 
  100.                         var length:int = ar.length; 
  101.                         if(length % 2 != 0 || length == 0) throw new error("参数错误!无法获取指定范围!"); 
  102.                         //将所有可能出现的随机数存入数组,然后进行随机 
  103.                         for(var i:int = 0; i < length / 2; i ++){ 
  104.                                 var i1:int = ar[i * 2]; 
  105.                                 var i2:int = ar[i * 2 + 1]; 
  106.                                 if(i1 > i2){ 
  107.                                         var tmp:number = i1
  108.                                         i1 = i2
  109.                                         i2 = tmp
  110.                                 } 
  111.                                 for(i1; i1 < i2; i1 ++) tmpar.push(i1); 
  112.                         } 
  113.                         var num:number = tmpar[integer(tmpar.length)]; 
  114.                         tmpar = null
  115.                         ar = null
  116.                         return num; 
  117.                 } 
  118.                 
  119.         } 
  120.         

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器