`

ActionScript 3.0 自写类整理笔记(十三)——Random类

阅读更多

ActionScript 3.0 自写类整理笔记(十三)——Random类

转载http://www.xiaos8.com/article.asp?id=122

 

代码

package index.base.func{
  
  public final class Random{
    
    public function Random(){
      throw new Error("随机函数工具包无法实例化!");
    }
    
    //获取一个随机的布尔值
    public static function get boolean():Boolean{
      return Math.random() < 0.5;
    }
    
    //获取一个正负波动值
    public static function get wave():int{
      return boolean ? 1 : -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;
    }
    
  }
  
}

 

举例

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
 */

 

分享到:
评论

相关推荐

    ActionScript 3.0 API文档(CHM+HTML最新中文完整)

    《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、...

    Flash ActionScript 3.0 编程技术教程(附书光盘)

    第6~9章介绍了ActionScript 3.0的核心——类及以类为基础的面向对象程序设计方法,包括类的基本概念、ActionScript 3.0中常用类的使用、显示编程和组件类;第10、11章分别介绍了几个ActionScript 3.0实际应用的范例...

    ActionScript3.0从零基础学习类

    在ActionScript3.0中,更加强调类和对象的使用,鼓励开发者摒弃在组件(如MC和BUTTON)上直接编写代码的习惯,转而使用面向对象的方法编写代码。 ### ActionScript3.0基础概念 1. **包(Package)**:包在...

    ActionScript 3.0开发技术大全(第一部分)

    第1篇 ActionScript3.0语言基础  第1章 ActionScript3.0概述  第2章 搭建ActionScript3.0开发环境  第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性  第4章 ActionScript3.0面向对象编程  第...

    Flash ActionScript3.0教程示例(从入门到精通).rar

    《Flash ActionScript3.0教程示例(从入门到精通)》是一本全面解析ActionScript3.0编程语言在Flash平台上的应用的教程。ActionScript3.0是Adobe Flash Professional中的核心编程语言,用于创建交互式动画、游戏、富...

    Flash ActionScript 3.0编程技术教程(全)

    第6~9章介绍了ActionScript 3.0的核心——类及以类为基础的面向对象程序设计方法,包括类的基本概念、ActionScript 3.0中常用类的使用、显示编程和组件类;第10、11章分别介绍了几个ActionScript 3.0实际应用的范例...

    ActionScript3.0 Game Programing中文版

    《ActionScript3.0 Game Programming》是一本专为游戏开发者设计的权威教程,中文版的出版使得更多中国读者能够深入理解和掌握ActionScript3.0在游戏开发中的应用。这本书不仅覆盖了ActionScript的基础语法和面向...

    ActionScript 3.0 编程.rar

    ActionScript 3.0 是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA,Rich Internet Applications),尤其是在Flash平台上。它极大地提升了Flash Player和Adobe AIR应用的性能和功能,使得...

    actionscript 3.0动画制作教程

    4. **使用Timeline Control类**:ActionScript 3.0提供了`TimelineCtrl`类,用于控制时间轴的播放,如播放、暂停、停止、跳转到特定帧等。这些功能对于交互式动画至关重要。 5. **事件驱动编程**:AS3.0是事件驱动...

    ActionScript3.0宝典 pdf 高清晰

    ActionScript 3.0 是Adobe开发的一种编程语言,主要用于创建交互式内容,特别是在Flash和Flex平台上。这个“ActionScript 3.0 宝典”很可能是一本全面介绍该语言的教程,适合初学者和有一定经验的开发者。PDF版本...

    ActionScript3.0完全自学手册电子教案_ActionScript3.0_

    ActionScript3.0是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA),尤其是在Flash平台上。它是Flash Professional、Flash Builder等工具的核心组成部分,让开发者能够为网页、桌面和移动...

    精通Flex 3.0——基于ActionScript 3.0实现_源代码

    《精通Flex 3.0——基于ActionScript 3.0实现》一书源代码。 Flex 3.0 ActionScript 3.0源代码 Flex 3.0源代码。 --------------------------- 第1篇 Flex技术概述 第1章 Flex概述 3 1.1 Flex简介 3 1.2 Flex...

    Foundation ActionScript 3.0 Animation

    《Foundation ActionScript 3.0 Animation》是一本...《foundation Actionscript3.0 Animation.pdf》这个文件很可能是这本书的电子版,包含完整的章节内容和可能的练习案例,对于自学或者参考来说是非常宝贵的资源。

    actionscript3.0开发的进度显示条项目

    ActionScript3.0(简称AS3)是Adobe Flash平台的核心编程语言,用于创建交互式、动态的富媒体内容,如网页动画、游戏、应用程序等。本项目“actionscript3.0开发的进度显示条项目”显然是一个使用AS3实现的可视化...

    ActionScript3.0帮助文档完整版

    在解压后的“ActionScript3.0chm完整版”文件中,你将找到详细的API参考、教程和示例代码,这些都能帮助你掌握ActionScript 3.0的核心概念和技术。无论是学习基本语法、类库使用,还是深入到高级特性,这个文档都是...

    ActionScript 3.0动态绘制正弦曲线(附源码)

    ActionScript 3.0是Adobe Flash Professional和Flex SDK中用于创建富互联网应用程序(RIA)的主要编程语言。在“ActionScript 3.0动态绘制正弦曲线”这个项目中,开发者利用了AS3的强大功能来创建可视化图形,特别是...

    最专业的ActionScript 3.0

    自ActionScript 1.0和2.0以来,ActionScript 3.0经过不断的演进,成为了一个规范且功能丰富的语言,极大地提升了Flash和Flex开发的效率和性能。 **3.2 ActionScript 3.0语法基础** 学习ActionScript 3.0首先需要...

Global site tag (gtag.js) - Google Analytics