flash.utils 包中具有多种包级函数,可用于代码执行计时、检索有关类和对象的信息以及转换转义字符。
公共方法
 函数定义方
  
取消指定的 setInterval() 调用。
flash.utils
  
取消指定的 setTimeout() 调用。
flash.utils
  
生成描述 ActionScript 对象(命名为方法的参数)的 XML 对象。
flash.utils
  
返回编码为 UTF-8 或系统代码页的输入字符串的转义副本,具体取决于 System.useCodePage 的值。
flash.utils
  
返回 name 参数指定的类的类对象引用。
flash.utils
  
返回对象的完全限定类名。
flash.utils
  
返回 value 参数指定的对象的基类的完全限定类名。
flash.utils
  
返回初始化 Flash Player 后经过的毫秒数,并使用它来计算相对时间。
flash.utils
  
setInterval(closure:Function, delay:Number, ... arguments):uint
以指定的间隔(以毫秒为单位)运行函数。
flash.utils
  
setTimeout(closure:Function, delay:Number, ... arguments):uint
在指定的延迟(以毫秒为单位)后运行指定的函数。
flash.utils
  
返回依据系统代码页或 UTF-8 解码的输入字符串的反向转义副本,具体取决于 System.useCodePage 的值。
flash.utils
函数详细信息
clearInterval()函数
public function clearInterval(id:uint):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

取消指定的 setInterval() 调用。

参数

id:uint — 设置为变量的 setInterval() 调用的 ID,如以下代码中所示:

另请参见


示例

以下示例使用 setInterval() 方法创建一个计时间隔,以 1 秒的固定间隔调用 myRepeatingFunction() 方法。

每次调用 myRepeatingFunction 方法都会递增 counter 属性,当该属性等于 stopCount 属性时,调用 clearInterval() 方法(使用属性 intervalId 进行调用,该属性是对前面创建的间隔的引用 ID)。

package {
    import flash.display.Sprite;
    import flash.utils.*;

    public class ClearIntervalExample extends Sprite {
        private var intervalDuration:Number = 1000; // duration between intervals, in milliseconds
        private var intervalId:uint;
        private var counter:uint     = 0;
        private var stopCount:uint     = 3;
        
        public function ClearIntervalExample() {
            intervalId = setInterval(myRepeatingFunction, intervalDuration, "Hello", "World");
        }

        public function myRepeatingFunction():void {
            trace(arguments[0] + " " + arguments[1]);

            counter++;
            if(counter == stopCount) {
                trace("Clearing Interval");
                clearInterval(intervalId);    
            }
        }
    }
}
clearTimeout()函数 
public function clearTimeout(id:uint):void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

取消指定的 setTimeout() 调用。

参数

id:uint — 设置为变量的 setTimeout() 调用的 ID,如以下代码中所示:

另请参见


示例

以下示例使用 setTimeout() 方法在指定的延迟期之后调用另一个方法。

创建一个计数到一百万的循环。如果计算机处理此请求的速度比第二个请求到期的速度更快,clearTimeout() 将删除 setTimeout() 请求,将不调用 myDelayedFunction()

package {
    import flash.display.Sprite;
    import flash.utils.*;

    public class ClearTimeoutExample extends Sprite {
        private var delay:Number = 1000; // delay before calling myDelayedFunction
        private var intervalId:uint;
        private var count:uint = 1000000;
        
        public function ClearTimeoutExample() {
            intervalId = setTimeout(myDelayedFunction, delay);
            startCounting();
        }

        public function startCounting():void {
            var i:uint = 0;
            do {
                if(i == count-1) {
                    clearTimeout(intervalId);
                    trace("Your computer can count to " + count + " in less than " + delay/1000 + " seconds.");    
                }
                i++;
            } while(i < count)            
        }
        
        public function myDelayedFunction():void {
            trace("Time expired.");
        }
    }
}
describeType()函数 
public function describeType(value:*):XML

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

生成描述 ActionScript 对象(命名为方法的参数)的 XML 对象。此方法实现 ActionScript 语言的反射编程概念。

如果 value 参数是类型的实例,则返回的 XML 对象包括该类型的所有实例属性,但不包括任何静态属性。可以在解析 XML 对象时检查此条件,方法是检查 <type> 标签的 isStatic 属性的值,该值在 value 参数是类型的实例时为 false

若要获取某个类型的静态属性,请为 value 参数传递该类型本身。返回的 XML 对象不仅仅包括类型的静态属性,而且还包括它的所有实例属性。实例属性嵌套在名为 <factory> 的标签内,从而与静态属性区分开来。在这种情况下,<type> 标签的 isStatic 属性为 true

注意:如果只需要遍历某个对象的继承层次结构,而不需要 describeType() 提供的其它信息,请改用 getQualifiedClassName()getQualifiedSuperclassName() 函数。

下表描述了由 describeType() 生成的 XML 对象的某些标签和属性(返回的所有类和接口名称均采用完全限定的格式):

标签属性Description
<type>  XML 对象的根标签。
 nameActionScript 对象的数据类型的名称。
 base ActionScript 对象的定义类的直接超类。如果 ActionScript 对象是类对象,则值为 Class
 isDynamic 如果 ActionScript 对象的定义类是动态的,则为 true;否则为 false。如果 ActionScript 对象是类对象,则值为 true,因为 Class 类是动态的。
 isFinal 如果 ActionScript 对象的定义类是最终类,则为 true;否则为 false
 isStatic 如果 ActionScript 对象是类对象或构造函数,则为 true;否则为 false。此属性之所以名为 isStatic,原因是:如果此属性为 true,则未嵌套在 factory 标记内的任何标签都是静态的。
<extendsClass>   ActionScript 对象的定义类的每个超类都有一个单独的 extendsClass 标签。
 typeActionScript 对象的定义类扩展的超类的名称。
<implementsInterface>   ActionScript 对象的定义类或其任何超类实现的每个接口都有一个单独的 implementsInterface 标签。
 typeActionScript 对象的定义类实现的接口的名称。
<accessor>  存取器是 getter 和 setter 函数定义的一个属性。
 name存取器的名称。
 access 属性的访问权限。可能的值包括 readonlywriteonlyreadwrite
 type属性的数据类型。
 declaredBy包含关联的 getter 或 setter 函数的类。
<constant>   常量是用 const 语句定义的一个属性。
 name常量的名称。
 type常量的数据类型。
<method>  方法是作为类定义的一部分声明的函数。
 name方法的名称。
 declaredBy包含方法定义的类。
 returnType方法的返回值的数据类型。
<parameter>   方法定义的每个参数都有一个单独的 parameter 标签。此标签始终嵌套在 <method> 标签内。
 index一个数字,对应于参数在方法的参数列表中出现的顺序。第一个参数的值为 1。
 type参数的数据类型。
 optional 如果参数是可选参数,则为 true;否则为 false
<variable>   变量是用 var 语句定义的一个属性。
 name变量的名称。
 type变量的数据类型。
<factory>   如果 ActionScript 对象是类对象或构造函数,则所有实例属性和方法均嵌套在此标签内。如果 <type> 标签的 isStatic 属性为 true,则未嵌套在 <factory> 标签内的所有属性和方法都是静态的。只有在 ActionScript 对象是类对象或构造函数时,此标签才会出现。

参数

value:* — 需要类型说明的对象。可以将任何 ActionScript 值传递给此方法,包括所有可用的 ActionScript 类型、对象实例、原始类型(如 uint)和类对象。

返回
XML — 一个 XML 对象,包含有关作为参数传入的对象的详细信息。它提供有关对象的以下信息:
  • 对象的类
  • 类的属性
  • 从类到其基类的继承树
  • 类实现的接口
  • 类的已声明实例属性
  • 类的已声明静态属性
  • 类的实例方法
  • 类的静态方法
  • (对于类的每个方法)名称、参数的数量、返回类型和参数类型

注意: describeType() 只显示公共属性和方法,而不会显示私有、在包内部或在自定义命名空间中的属性和方法。

另请参见


示例

package {
    import flash.display.Sprite;
    import flash.utils.describeType;
    
    public class DescribeTypeExample extends Sprite {
        public function DescribeTypeExample() {
            var child:Sprite = new Sprite();
            var description:XML = describeType(child);
            trace(description..accessor.@name.toXMLString());
        }
    }
}
escapeMultiByte()函数 
public function escapeMultiByte(value:String):String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回编码为 UTF-8 或系统代码页的输入字符串的转义副本,具体取决于 System.useCodePage 的值。通过使用 System.useCodePage,将使播放器能够访问用本地代码页编码的旧内容,但只能在使用旧代码页的系统上访问。例如,在使用日语默认代码页的操作系统中,只能正确转义和反向转义以 Shift-JIS 编码的日语数据。

参数

value:String — 要转义的字符串。

返回
String — 输入字符串的转义副本。如果 System.useCodePage 为 true,则转义字符串采用系统代码页编码。如果 System.useCodePage 为 false,则转义字符串采用 UTF-8 编码。例如,如果 System.useCodePage 为 false,输入字符串“Crüe”在所有系统上都将被转义为“Cr%C3%BCe”。如果 system.useCodePage 为 true,并且系统使用拉丁语代码页,则“Crüe”将被转义为“Cr%FCe”。如果系统使用不包含字母“ü”的非拉丁语代码页,结果将可能为“Cr?e”。
getDefinitionByName()函数 
public function getDefinitionByName(name:String):Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回 name 参数指定的类的类对象引用。

参数

name:String — 类的名称。

返回
Object — 返回 name 参数指定的类的类对象引用。

引发
ReferenceError — 不存在具有指定名称的公共定义。

示例

以下示例使用 GetDefinitionByNameExample 类在舞台上创建一个橙色的正方形。这是使用以下步骤完成的:
  1. 声明代表橙色背景颜色和 80 像素大小的变量,这些变量稍后将用于绘制正方形。
  2. 在构造函数内,将 Class 类型的变量 ClassReference 赋予 Sprite。
  3. 对名为 instance 的 ClassReference 的实例进行实例化。
  4. 由于 instance 按引用是 Sprite 对象,因此可以使用可用于 Sprite 的方法绘制正方形并将其添加到显示列表。
package {
    import flash.display.DisplayObject;
    import flash.display.Sprite;
    import flash.utils.getDefinitionByName;

    public class GetDefinitionByNameExample extends Sprite {
        private var bgColor:uint = 0xFFCC00;
        private var size:uint = 80;

        public function GetDefinitionByNameExample() {
            var ClassReference:Class = getDefinitionByName("flash.display.Sprite") as Class;
            var instance:Object = new ClassReference();
            instance.graphics.beginFill(bgColor);
            instance.graphics.drawRect(0, 0, size, size);
            instance.graphics.endFill();
            addChild(DisplayObject(instance));
        }
    }
}
getQualifiedClassName()函数 
public function getQualifiedClassName(value:*):String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回对象的完全限定类名。

参数

value:* — 需要完全限定类名称的对象。可以将任何 ActionScript 值传递给此方法,包括所有可用的 ActionScript 类型、对象实例、原始类型(如 uint)和类对象。

返回
String — 包含完全限定类名称的字符串。

另请参见

getQualifiedSuperclassName()函数 
public function getQualifiedSuperclassName(value:*):String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回 value 参数指定的对象的基类的完全限定类名。此函数检索基类名称的速度比 describeType() 快,但提供的信息不如 describeType() 全面。

使用此函数检索了类的名称后,可以用 getDefinitionByName() 函数将类名称转换为类引用。

注意:此函数将本身局限于实例层次结构,而 describeType() 函数则使用类对象层次结构(如果 value 参数是数据类型)。如果在数据类型上调用 describeType(),将会基于类对象层次结构(其中所有类对象均继承自 Class)返回超类。但是,getQualifiedSuperclassName() 函数会忽略类对象层次结构,并基于较普通的实例层次结构返回超类。例如,调用 getQualifiedSuperclassName(String) 将会返回 Object,尽管从技术角度来说 String 类对象继承自 Class。换言之,不管使用的是类型的实例还是类型本身,结果都是相同的。

参数

value:* — 任何值。

返回
String — 完全限定的基类名称,或 null(如果不存在基类名称)。

另请参见

getTimer()函数 
public function getTimer():int

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回初始化 Flash Player 后经过的毫秒数,并使用它来计算相对时间。关于日历日期(时间戳),请参阅 Date 对象。

返回
int — 初始化 Flash Player 后经过的毫秒数。如果播放器开始播放一个 SWF 文件,并稍后加载另一个 SWF 文件,则返回值相对于加载第一个 SWF 文件时的时间。

另请参见


示例

以下示例使用 GetTimerExample 类获取并输出自 Flash Player 开始播放后经过的毫秒数。
package {
    import flash.utils.getTimer;
    import flash.display.Sprite;

    public class GetTimerExample extends Sprite {
        public function GetTimerExample() {
            var duration:uint = getTimer();
            trace("duration: " + duration);
        }
    }
}
setInterval()函数 
public function setInterval(closure:Function, delay:Number, ... arguments):uint

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

以指定的间隔(以毫秒为单位)运行函数。

作为使用 setInterval() 方法的替代方法,请考虑创建一个 Timer 对象,带有指定的间隔,并使用 0 作为 repeatCount 参数(这样可将计时器设置为无限制重复)。

如果打算使用 clearInterval() 方法取消 setInterval() 调用,请确保将 setInterval() 调用分配给一个变量(clearInterval() 函数稍后将引用该变量)。如果不通过调用 clearInterval() 函数取消 setInterval() 调用,则不会将包含 setTimeout 闭包函数的对象作为垃圾回收。

参数

closure:Function — 要执行的函数的名称。不要包括引号或圆括号,并且不要指定要调用的函数的参数。例如,使用 functionName,而不要使用 functionName()functionName(param)
 
delay:Number — 间隔(以毫秒为单位)。
 
... arguments — 传递给 closure 函数的可选参数列表。

返回
uint — 超时进程的唯一数字标识符。使用此标识符可通过调用 clearInterval() 方法取消进程。

另请参见


示例

以下示例使用 setInterval() 方法创建一个计时间隔,以 1 秒的固定间隔调用 myRepeatingFunction() 方法。
package {
    import flash.display.Sprite;
    import flash.utils.*;

    public class SetIntervalExample extends Sprite {
        private var intervalDuration:Number = 1000; // duration between intervals, in milliseconds
        
        public function SetIntervalExample() {
            var intervalId:uint = setInterval(myRepeatingFunction, intervalDuration, "Hello", "World");
        }

        public function myRepeatingFunction():void {
            trace(arguments[0] + " " + arguments[1]);
        }
    }
}
setTimeout()函数 
public function setTimeout(closure:Function, delay:Number, ... arguments):uint

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

在指定的延迟(以毫秒为单位)后运行指定的函数。

作为使用此方法的替代方法,请考虑创建一个 Timer 对象,带有指定的间隔,并使用 1 作为 repeatCount 参数(这样可将计时器设置为只运行一次)。

如果打算使用 clearTimeout() 方法取消 setTimeout() 调用,请确保将 setTimeout() 调用分配给一个变量(clearTimeout() 函数稍后将引用该变量)。如果不通过调用 clearTimeout() 函数取消 setTimeout() 调用,则不会将包含设置的超时 closure 函数的对象作为垃圾回收。

参数

closure:Function — 要执行的函数的名称。不要包括引号或圆括号,并且不要指定要调用的函数的参数。例如,使用 functionName,而不要使用 functionName()functionName(param)
 
delay:Number — 执行函数之前的延迟时间(以毫秒为单位)。
 
... arguments — 传递给 closure 函数的可选参数列表。

返回
uint — 超时进程的唯一数字标识符。使用此标识符可通过调用 clearTimeout() 方法取消进程。

另请参见


示例

以下示例使用 setTimeout() 方法在指定的延迟期之后调用另一个方法。
package {
    import flash.display.Sprite;
    import flash.utils.*;

    public class SetTimeoutExample extends Sprite {
        private var delay:Number = 1000; // delay before calling myDelayedFunction
        
        public function SetTimeoutExample() {
            var intervalId:uint = setTimeout(myDelayedFunction, delay, "Hello", "World");
        }

        public function myDelayedFunction():void {
            trace(arguments[0] + " " + arguments[1]);
        }
    }
}
unescapeMultiByte()函数 
public function unescapeMultiByte(value:String):String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回依据系统代码页或 UTF-8 解码的输入字符串的反向转义副本,具体取决于 System.useCodePage 的值。通过使用 System.useCodePage,将使播放器能够访问用本地代码页编码的旧内容,但只能在使用旧代码页的系统上访问。例如,在使用日语默认代码页的操作系统中,只能正确转义和反向转义以 Shift-JIS 编码的日语数据。

参数

value:String — 要反向转义的转义字符串。

返回
String — 输入字符串的反向转义副本。如果 System.useCodePage 为 true,则依据系统代码页对转义字符串进行解码。如果 System.useCodePage 为 false,则依据 UTF-8 对转义字符串进行解码。例如,如果输入字符串为“Cr%C3%BCe”并且 System.useCodePage 为 false,则在所有系统上的结果都是“Crüe”。如果 System.useCodePage 为 true 且输入字符串为“Cr%FCe”,并且系统使用拉丁语代码页,则结果将也是“Crüe”。如果在 System.useCodePage 设置为 true 的情况下对“Cr%C3%BCe”进行反向转义,则在不同的系统上会生成不同的错误结果,比如在拉丁语系统上会生成“Crüe”。同样,在 System.useCodePage 设置为 false 的情况下对“Cr%FCe”进行反向转义可能会生成“Cre”、“Cr?e”或其它变体,具体取决于系统的代码页。