flash as3教程:random类

更新时间:15-10-24 10:30 热度:369
 

面前讲了flash as3教程:level2d类,random类是一个简单的随机函数工具类,一共供给了9种静态办法来取得不一样的随机值。
轻易写的,假如你还有啥子更好的提议,请提出来,谢谢~

index.base.func.random类:
代码:public final class random
供给了9种静态办法来取得不一样的随机值

建构函数:
public function random()
假如直接实际的例子化该类,将抛出不正确

boolean静态属性:
public static function get boolean():boolean
随机取得一个布尔值,即有可能是true,也有可能是false

wave静态属性:
public static function get wave():int
随机取得一个正负撩动值,即有可能是1,也有可能是-1

integer静态办法:
public static function integer(num:number):int
随机取得一个范围中的平头数值

number静态办法:
public static function number(num:number):number
随机取得一个范围中的number指

range静态办法:
public static function range(num1:number,num2:number,isint:boolean = true):number
isint:表达是否以平头数随机
随机在一个指定范围取得数字

ranges静态办法:
public static function ranges(…args):number
最终一个参变量可以是思维规律值,用法等同于range的isint参变量,默许为true
随机在多个指定范围取得数字

string静态办法:
public static function string(str:string = "0-9,a-z,a-z"):string
在指定范围随机一个字符

bit静态办法:
public static function bit(num:int,str:string = ""):string
在指定范围随机一个num位的字符串

color静态办法:
public static function color(red:string = "0-255",green:string = "0-255",blue:string = "0-255"):uint
在指定范围随机一个颜色值

举例:

code:
import index.base.func.random;

trace(random.boolean "(随机一个布尔值)");
trace(random.color() "(随机一个rgb颜色值)");
trace(random.color("153-255","0-100","0-100") "(随机一个偏红的rgb颜色值)");
trace(random.wave "(随机一个撩动值)");
trace(random.string() "(随机一个字符)");
trace(random.integer(4) "(随机一个int值)");
trace(random.number(4) "(随机一个number值)");
trace(random.string("a-z,a-z") "(在一个范围随机字符)");
trace(random.string("我,你,他") "(在一个范围随机汉字字符)");
trace(random.ranges(5,4,3,-1,-10,-14,true) "(在多个指定范围随机数字)");
trace(random.range(4,9) "(在一个指定范围随机数字)");
trace(random.bit(8) "(随机一个八位的字符串)");
trace(random.bit(16,"0-1") "(随机一个十六位的二进制)");
trace("…………")

//生成一个偏红的颜色色块
var sh:shape = new shape();
var rgb:uint = random.color("204-255","0-153","0-153");
trace(rgb1.tostring(16));
sh.graphics.beginfill(rgb);
sh.graphics.drawrect(100,100,100,100);
addchild(sh);

//生成一个颜色偏深还是偏淡的颜色色块
var sh1:shape = new shape();
var rgb1:uint = random.color("0-20,240-255","0-20,240-255","0-20,240-255");
trace(rgb1.tostring(16));
sh1.graphics.beginfill(rgb1);
sh1.graphics.drawrect(200,100,100,100);
addchild(sh1);

/**
* 输出:
* false(随机一个布尔值)
* 8370486(随机一个rgb颜色值)
* 12322387(随机一个偏红的rgb颜色值)
* -1(随机一个撩动值)
* e(随机一个字符)
* 3(随机一个int值)
* 1.0007172282785177(随机一个number值)
* m(在一个范围随机字符)
* 我(在一个范围随机汉字字符)
* -14(在多个指定范围随机数字)
* 5(在一个指定范围随机数字)
* idpjav1l(随机一个八位的字符串)
* 1010100101010100(随机一个十六位的二进制)
* …………
* dd5506
* fef003
*/
类源代码:

code:
package index.base.func{

public final class random{

public function random(){
throw new error("随机函数工具包没有办法实际的例子化!");
}

//取得一个随机的布尔值
public static function get boolean():boolean{
return boolean(integer(2));
}

//取得一个正负撩动值
public static function get wave():int{
return integer(2) * 2 - 1;
}

//取得一个随机的范围平头数值
public static function integer(num:number):int{
return math.floor(number(num));
}

//取得一个随机的范围number值
public static function number(num:number):number{
return math.random() * num;
}

//在一个范围内取得一个随机值,回返最后结果范围:num1 >= num > num2
public static function range(num1:number,num2:number,isint:boolean = true):number{
var num:number = number(num2 - num1) num1;
if(isint) num = math.floor(num);
return num;
}

//在多个范围取得随机值
public static function ranges(...args):number{
var isint:boolean = args[args.length - 1] is boolean ? args.pop() : true;
var num:number = randomrange(args);
if(!isint) num = math.random();
return num;
}

//取得一个随机字符,默许随机范围为数码 体积写字母,也可以指定范围,款式:a-z,a-h,5-9
public static function string(str:string = "0-9,a-z,a-z"):string{
return string.fromcharcode(randomrange(explain(str)));
}

//生成指定位数的随机字符串
public static function bit(num:int,str:string = "0-9,a-z,a-z"):string{
var restr:string = "";
for(var i:int = 0; i < num; i ) restr = string(str);
return restr;
}

//取得一个随机的颜色值
public static function color(red:string = "0-255",green:string = "0-255",blue:string = "0-255"):uint{
return number("0x" transform(randomrange(explain(red,false)))
transform(randomrange(explain(green,false)))
transform(randomrange(explain(blue,false))));
}

//将10进制的rgb色改换为2位的16进制
private static function transform(num:uint):string{
var restr:string = num.tostring(16);
if(restr.length != 2) restr = "0" restr;
return restr;
}

//字符串解析
private static function explain(str:string,iscodeat:boolean = true):array{
var argar:array = new array;
var tmpar:array = str.split(",");
for(var i:int = 0; i < tmpar.length; i ){
var ar:array = tmpar[i].split("-");
if(ar.length == 2){
var arpush0:string = ar[0];
var arpush1:string = ar[1];
if(iscodeat){
arpush0 = arpush0.charcodeat().tostring();
arpush1 = arpush1.charcodeat().tostring();
}
//此处假如不加1,将不会随机ar[1]所表达字符,因为这个需求加上1,随机范围才是对的
argar.push(number(arpush0),number(arpush1) 1);
}else if(ar.length == 1){
var arpush:string = ar[0];
if(iscodeat) arpush = arpush.charcodeat().tostring();
//假如范围是1-2,那末整型随机一准是1,因为这个拿出第1个参变量后,把范围定在参变量 1,则就是让该参变量加入随机
argar.push(number(arpush),number(arpush) 1);
}
ar = 门里出身;
}
tmpar = 门里出身;
return argar;
}

//取得随机范围
private static function randomrange(ar:array):number{
var tmpar:array = new array;
var length:int = ar.length;
if(length 百分之百 2 != 0 length == 0) throw new error("参变量不正确!没有办法取得指定范围!");
//将所可能显露出来的随机数存入数组,而后行随机
for(var i:int = 0; i < length / 2; i ){
var i1:int = ar[i * 2];
var i2:int = ar[i * 2 1];
if(i1 > i2){
var tmp:number = i1;
i1 = i2;
i2 = tmp;
}
for(i1; i1 < i2; i1 ) tmpar.push(i1);
}
var num:number = tmpar[integer(tmpar.length)];
tmpar = 门里出身;
ar = 门里出身;
return num;
}

}

}