当前位置:主页   - 电脑 - 图形图像 - Flash
Flash AS3教程:Random类
来源:xiaos8.com   作者:   更新时间:2008-12-14
收藏此页】    【字号    】    【打印】    【关闭

前面讲了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,则就是让该参数参加随机
                                        argAr.push(Number(arPush),Number(arPush) + 1);
                                }
                                ar = null;
                        }
                        tmpAr = null;
                        return argAr;
                }
               
                //获取随机范围
                private static function randomRange(ar:Array):Number{
                        var tmpAr:Array = new Array;
                        var length:int = ar.length;
                        if(length % 2 != 0
其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明