手机
当前位置:查字典教程网 >网页设计 >Flash教程 >Flash AS3教程:Random类
Flash AS3教程:Random类
摘要:前面讲了FlashAS3教程:Level2D类,Random类是一个简单的随机函数工具类,总共提供了9种静态方法来获取不同的随机值。随便写的...

前面讲了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 || 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 = null;

ar = null;

return num;

}

}

}

【Flash AS3教程:Random类】相关文章:

Flash按钮动效小教程

Flash cs3教程:位图动画的表现

Flash AS教程:图片环绕旋转动画

Flash AS特效:超绚丽的闪字动画

Flash AS3实例教程:快速制作烟雾动画

Flash cs3鼠绘教程:动画技巧之绘制猴子

Flash教程:绘制卡通MM眨眼睛动画

Flash游戏开发教程:第八节

Flash游戏开发教程:第二节

flash刷子工具教程

精品推荐
分类导航