action script3中的is和as运算符
is运算符计算对象是否与特定数据类型、类或接口兼容。使用
is
运算符(而非 instanceof
运算符)进行类型比较。还可以使用 is
运算符来检查对象是否实现某个接口。其返回结果是Boolean
package {
import flash.display.*;
import flash.events.IEventDispatcher;
public class test extends Sprite
{
public function test()
{
var str:String=new String("strstr");
var mySprite:Sprite=new Sprite();
trace(str is Object);//ture
trace(mySprite is Sprite);//ture
trace(mySprite is IEventDispatcher); // true
trace(mySprite is DisplayObject); // true
trace(test is Object);//ture
trace(test is Class);//ture test类是一个Class对象,
trace(String is Object);//ture Object类型是所有其他类型的基类型
checkfun();//ture
}
public function checkfun():void
{
trace(checkfun is Function);//checkfun函数是Function类的一个实例
}
}
}
as运算符与is运算符相似,只是返回值不一样.
关于Class类:
为程序中的每个类定义创建一个 Class 对象。 每个 Class 对象都是 Class 类的一个实例。 Class 对象包含该类的静态属性和方法。 在使用 new
运算符进行调用时,Class 对象会创建该类的实例。 有些方法(如 flash.net.getClassByAlias()
)返回 Class 类型的对象。 其它方法可能返回 Class 类型的参数,例如 flash.net.registerClassAlias()
。
该类名称是对 Class 对象的引用,如下例所示:class Foo { }
class Foo{}
语句是创建 Class 对象 Foo 的类定义。 此外,语句 new Foo()
还将创建类 Foo 的一个新实例,其结果为 Foo 类型。
使用 class
语句声明所需类。 Class 对象对于高级技术(例如在运行时将类赋值给现有实例对象)很有用,如以下“示例”部分所示。
一个类的任何静态属性和方法都存在于该类的 Class 对象上。 Class 自己声明 prototype
。
一般来讲,不需要手动声明或创建 Class 类型的变量。 但是,在以下代码中,一个类被赋予公共 Class 属性 circleClass
,同时可以将该 Class 属性作为主 Library 类的一个属性加以引用:
package {
import flash.display.Sprite;
import flash.display.Shape;
public class Library extends Sprite {
public var circleClass:Class = Circle;
public function Library() {
}
}
public class Circle extends Shape {
public function Circle(color:uint = 0xFFCC00, radius:Number = 10){
graphics.beginFill(color);
graphics.drawCircle(radius, radius, radius);
}
}
}
另一个 SWF 文件可以加载生成的 Library.swf 文件,然后实例化 Circle 类型的对象。 下面的示例演示一种可以访问子 SWF 文件资源的方法。 (其它技术包括使用 flash.utils.getDefnitionByName()
或导入子 SWF 文件的存根定义。)
package {
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
public class LibaryLoader extends Sprite {
public function LibaryLoader() {
var ldr:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("Library.swf");
ldr.load(urlReq);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
}
private function loaded(event:Event):void {
var library:Object = event.target.content;
var circle:Shape = new library.circleClass();
addChild(circle);
}
}
}
在 ActionScript 3.0 中,可以为编译到 SWF 文件中的外部资源(如图像、声音或字体)创建嵌入类。 在较早版本的 ActionScript 中,这些资源通过 MovieClip.attachMovie()
方法使用链接 ID 关联。 在 ActionScript 3.0 中,每个嵌入资源由一个唯一的嵌入资源类表示。 因此,可以使用 new
运算符实例化资源的关联类,并调用该资源上的方法和属性。
我在乡下当农民,又学英语又耕地方,某天学会ABC,就能开拖拉机.