Flash AS3教程:Random类
前面讲了Flash AS3教程:Level2D类,Random类是一个简单的随机函数工具类,总共提供了9种静态方法来获取不同的随机值。<br /><br />随便写的,如果你还有什么更好的建议,请提出来,谢谢~<br /><br />index.base.func.Random类:<br />代码:public final class Random<br />提供了9种静态方法来获取不同的随机值<br /><br />构造函数:<br />public function Random()<br />如果直接实例化该类,将抛出错误<br /><br />boolean静态属性:<br />public static function get boolean():Boolean<br />随机获取一个布尔值,即可能是true,也可能是false<br /><br />wave静态属性:<br />public static function get wave():int<br />随机获取一个正负波动值,即可能是1,也可能是-1<br /><br />integer静态方法:<br />public static function integer(num:Number):int<br />随机获取一个范围中的整数值<br /><br />number静态方法:<br />public static function number(num:Number):Number<br />随机获取一个范围中的Number指<br /><br />range静态方法:<br />public static function range(num1:Number,num2:Number,isInt:Boolean = true):Number<br />isInt:表示是否以整数随机<br />随机在一个指定范围获取数值<br /><br />ranges静态方法:<br />public static function ranges(...args):Number<br />最后一个参数可以是逻辑值,用处等同于range的isInt参数,默认为true<br />随机在多个指定范围获取数值<br /><br />string静态方法:<br />public static function string(str:String = "0-9,A-Z,a-z"):String<br />在指定范围随机一个字符<br /><br />bit静态方法:<br />public static function bit(num:int,str:String = ""):String<br />在指定范围随机一个num位的字符串<br /><br />color静态方法:<br />public static function color(red:String = "0-255",green:String = "0-255",blue:String = "0-255"):uint<br />在指定范围随机一个颜色值<br /><br />举例:<br /><br />CODE:<br />import index.base.func.Random;<br /><br />trace(Random.boolean+"(随机一个布尔值)");<br />trace(Random.color()+"(随机一个RGB颜色值)");<br />trace(Random.color("153-255","0-100","0-100")+"(随机一个偏红的RGB颜色值)");<br />trace(Random.wave+"(随机一个波动值)");<br />trace(Random.string()+"(随机一个字符)");<br />trace(Random.integer(4)+"(随机一个int值)");<br />trace(Random.number(4)+"(随机一个Number值)");<br />trace(Random.string("a-z,A-Z")+"(在一个范围随机字符)");<br />trace(Random.string("我,你,他")+"(在一个范围随机中文字符)");<br />trace(Random.ranges(5,4,3,-1,-10,-14,true)+"(在多个指定范围随机数值)");<br />trace(Random.range(4,9)+"(在一个指定范围随机数值)");<br />trace(Random.bit(8)+"(随机一个八位的字符串)");<br />trace(Random.bit(16,"0-1")+"(随机一个十六位的二进制)");<br />trace("…………")<br /><br />//生成一个偏红的颜色色块<br />var sh:Shape = new Shape();<br />var rgb:uint = Random.color("204-255","0-153","0-153");<br />trace(rgb1.toString(16));<br />sh.graphics.beginFill(rgb);<br />sh.graphics.drawRect(100,100,100,100);<br />addChild(sh);<br /><br />//生成一个颜色偏深或者偏淡的颜色色块<br />var sh1:Shape = new Shape();<br />var rgb1:uint = Random.color("0-20,240-255","0-20,240-255","0-20,240-255");<br />trace(rgb1.toString(16));<br />sh1.graphics.beginFill(rgb1);<br />sh1.graphics.drawRect(200,100,100,100);<br />addChild(sh1);<br /><br />/**<br />* 输出:<br />* false(随机一个布尔值)<br />* 8370486(随机一个RGB颜色值)<br />* 12322387(随机一个偏红的RGB颜色值)<br />* -1(随机一个波动值)<br />* E(随机一个字符)<br />* 3(随机一个int值)<br />* 1.0007172282785177(随机一个Number值)<br />* m(在一个范围随机字符)<br />* 我(在一个范围随机中文字符)<br />* -14(在多个指定范围随机数值)<br />* 5(在一个指定范围随机数值)<br />* idPJav1l(随机一个八位的字符串)<br />* 1010100101010100(随机一个十六位的二进制)<br />* …………<br />* dd5506<br />* fef003<br />*/<br />类源代码:<br />CODE:<br />package index.base.func{<br /> <br /> public final class Random{<br /> <br /> public function Random(){<br /> throw new Error("随机函数工具包无法实例化!");<br /> }<br /> <br /> //获取一个随机的布尔值<br /> public static function get boolean():Boolean{<br /> return Boolean(integer(2));<br /> }<br /> <br /> //获取一个正负波动值<br /> public static function get wave():int{<br /> return integer(2) * 2 - 1;<br /> }<br /> <br /> //获取一个随机的范围整数值<br /> public static function integer(num:Number):int{<br /> return Math.floor(number(num));<br /> }<br /> <br /> //获取一个随机的范围Number值<br /> public static function number(num:Number):Number{<br /> return Math.random() * num;<br /> }<br /> <br /> //在一个范围内获取一个随机值,返回结果范围:num1 >= num > num2<br /> public static function range(num1:Number,num2:Number,isInt:Boolean = true):Number{<br /> var num:Number = number(num2 - num1) + num1;<br /> if(isInt) num = Math.floor(num);<br /> return num;<br /> }<br /> <br /> //在多个范围获取随机值<br /> public static function ranges(...args):Number{<br /> var isInt:Boolean = args is Boolean ? args.pop() : true;<br /> var num:Number = randomRange(args);<br /> if(!isInt) num += Math.random();<br /> return num;<br /> }<br /> <br /> //获取一个随机字符,默认随机范围为数字+大小写字母,也可以指定范围,格式:a-z,A-H,5-9<br /> public static function string(str:String = "0-9,A-Z,a-z"):String{<br /> return String.fromCharCode(randomRange(explain(str)));<br /> }<br /> <br /> //生成指定位数的随机字符串<br /> public static function bit(num:int,str:String = "0-9,A-Z,a-z"):String{<br /> var reStr:String = "";<br /> for(var i:int = 0; i < num; i ++) reStr += string(str);<br /> return reStr;<br /> }<br /> <br /> //获取一个随机的颜色值<br /> public static function color(red:String = "0-255",green:String = "0-255",blue:String = "0-255"):uint{<br /> return Number("0x" + transform(randomRange(explain(red,false))) +<br /> transform(randomRange(explain(green,false))) +<br /> transform(randomRange(explain(blue,false))));<br /> }<br /> <br /> //将10进制的RGB色转换为2位的16进制<br /> private static function transform(num:uint):String{<br /> var reStr:String = num.toString(16);<br /> if(reStr.length != 2) reStr = "0" + reStr;<br /> return reStr;<br /> }<br /> <br /> //字符串解析<br /> private static function explain(str:String,isCodeAt:Boolean = true):Array{<br /> var argAr:Array = new Array;<br /> var tmpAr:Array = str.split(",");<br /> for(var i:int = 0; i < tmpAr.length; i ++){<br /> var ar:Array = tmpAr.split("-");<br /> if(ar.length == 2){<br /> var arPush0:String = ar;<br /> var arPush1:String = ar;<br /> if(isCodeAt){<br /> arPush0 = arPush0.charCodeAt().toString();<br /> arPush1 = arPush1.charCodeAt().toString();<br /> }<br /> //此处如果不加1,将不会随机ar所表示字符,因此需要加上1,随机范围才是对的<br /> argAr.push(Number(arPush0),Number(arPush1) + 1);<br /> }else if(ar.length == 1){<br /> var arPush:String = ar;<br /> if(isCodeAt) arPush = arPush.charCodeAt().toString();<br /> //如果范围是1-2,那么整型随机必定是1,因此拿出第一个参数后,把范围定在参数+1,则就是让该参数参加随机<br /> argAr.push(Number(arPush),Number(arPush) + 1);<br /> }<br /> ar = null;<br /> }<br /> tmpAr = null;<br /> return argAr;<br /> }<br /> <br /> //获取随机范围<br /> private static function randomRange(ar:Array):Number{<br /> var tmpAr:Array = new Array;<br /> var length:int = ar.length;<br /> if(length % 2 != 0 || length == 0) throw new Error("参数错误!无法获取指定范围!");<br /> //将所有可能出现的随机数存入数组,然后进行随机<br /> for(var i:int = 0; i < length / 2; i ++){<br /> var i1:int = ar;<br /> var i2:int = ar;<br /> if(i1 > i2){<br /> var tmp:Number = i1;<br /> i1 = i2;<br /> i2 = tmp;<br /> }<br /> for(i1; i1 < i2; i1 ++) tmpAr.push(i1);<br /> }<br /> var num:Number = tmpAr;<br /> tmpAr = null;<br /> ar = null;<br /> return num;<br /> }<br /> <br /> }<br /> <br />}<br /><br /><blockquote class="blockquote">From: http://www.photoep.cn/read.php?tid=98Powered by PHPWind.com</blockquote>
页:
[1]