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 |
| | 以指定的间隔(以毫秒为单位)运行函数。 | flash.utils |
| | 在指定的延迟(以毫秒为单位)后运行指定的函数。 | flash.utils |
| | 返回依据系统代码页或 UTF-8 解码的输入字符串的反向转义副本,具体取决于 System.useCodePage 的值。 | flash.utils |
public function clearInterval(id:uint):void
运行时版本: | 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);
}
}
}
}
public function clearTimeout(id:uint):void
运行时版本: | 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.");
}
}
}
public function describeType(value:*):XML
运行时版本: | 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 对象的根标签。 |
| name | ActionScript 对象的数据类型的名称。 |
| 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 标签。
|
| type | ActionScript 对象的定义类扩展的超类的名称。 |
<implementsInterface>
| |
ActionScript 对象的定义类或其任何超类实现的每个接口都有一个单独的 implementsInterface 标签。
|
| type | ActionScript 对象的定义类实现的接口的名称。 |
<accessor>
| | 存取器是 getter 和 setter 函数定义的一个属性。 |
| name | 存取器的名称。 |
| access |
属性的访问权限。可能的值包括 readonly 、writeonly 和 readwrite 。
|
| 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());
}
}
}
public function escapeMultiByte(value:String):String
运行时版本: | AIR 1.0 Flash Player 9 |
返回编码为 UTF-8 或系统代码页的输入字符串的转义副本,具体取决于 System.useCodePage 的值。通过使用 System.useCodePage,将使播放器能够访问用本地代码页编码的旧内容,但只能在使用旧代码页的系统上访问。例如,在使用日语默认代码页的操作系统中,只能正确转义和反向转义以 Shift-JIS
编码的日语数据。
参数
返回 | 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”。
|
public function getDefinitionByName(name:String):Object
运行时版本: | AIR 1.0 Flash Player 9 |
返回 name
参数指定的类的类对象引用。
参数
返回 | Object —
返回 name 参数指定的类的类对象引用。
|
引发 示例
以下示例使用
GetDefinitionByNameExample
类在舞台上创建一个橙色的正方形。这是使用以下步骤完成的:
- 声明代表橙色背景颜色和 80 像素大小的变量,这些变量稍后将用于绘制正方形。
-
在构造函数内,将 Class 类型的变量
ClassReference
赋予 Sprite。
-
对名为
instance
的 ClassReference 的实例进行实例化。
-
由于
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));
}
}
}
public function getQualifiedClassName(value:*):String
运行时版本: | AIR 1.0 Flash Player 9 |
返回对象的完全限定类名。
参数
| value:* — 需要完全限定类名称的对象。可以将任何 ActionScript 值传递给此方法,包括所有可用的 ActionScript 类型、对象实例、原始类型(如 uint)和类对象。 |
返回另请参见
public function getQualifiedSuperclassName(value:*):String
运行时版本: | AIR 1.0 Flash Player 9 |
返回 value
参数指定的对象的基类的完全限定类名。此函数检索基类名称的速度比 describeType()
快,但提供的信息不如 describeType()
全面。
使用此函数检索了类的名称后,可以用 getDefinitionByName()
函数将类名称转换为类引用。
注意:此函数将本身局限于实例层次结构,而 describeType()
函数则使用类对象层次结构(如果 value
参数是数据类型)。如果在数据类型上调用 describeType()
,将会基于类对象层次结构(其中所有类对象均继承自 Class)返回超类。但是,getQualifiedSuperclassName()
函数会忽略类对象层次结构,并基于较普通的实例层次结构返回超类。例如,调用 getQualifiedSuperclassName(String)
将会返回 Object
,尽管从技术角度来说 String 类对象继承自 Class。换言之,不管使用的是类型的实例还是类型本身,结果都是相同的。
参数
返回 | String —
完全限定的基类名称,或 null (如果不存在基类名称)。
|
另请参见
public function getTimer():int
运行时版本: | 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);
}
}
}
public function setInterval(closure:Function, delay:Number, ... arguments):uint
运行时版本: | 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]);
}
}
}
public function setTimeout(closure:Function, delay:Number, ... arguments):uint
运行时版本: | 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]);
}
}
}
public function unescapeMultiByte(value:String):String
运行时版本: | AIR 1.0 Flash Player 9 |
返回依据系统代码页或 UTF-8 解码的输入字符串的反向转义副本,具体取决于 System.useCodePage 的值。通过使用 System.useCodePage,将使播放器能够访问用本地代码页编码的旧内容,但只能在使用旧代码页的系统上访问。例如,在使用日语默认代码页的操作系统中,只能正确转义和反向转义以 Shift-JIS
编码的日语数据。
参数
返回 | 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”或其它变体,具体取决于系统的代码页。
|
© 2004-2008 Adobe Systems Incorporated. All rights reserved.
Sun Dec 14 2008, 10:46 PM -08:00