快速业务通道

关于 AS2.0 的 Intrinsic 类

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12


在ActionScript 2.0中,还存在另外一种类,那就是Intrinsic 类,但是事实上它却不是真正的类。它更像是与类相关的一些指导,它只有一个目的,那就是为已存在的类提供严格数据类型定义。Macromedia 用intrinsic类来为 在Flash内部的类和对象定义数据类型(你可以在Flash MX 2004的安装目录下的Classes文件夹下找到这些定义文件)。包括Array, MovieClip和Math等对象。但是,我们什么时候会去使用他们,我们什么时候需要去定义这样数据类型的类呢?

最有可能的情况是,当你作为一个开发者,并且正在开发一个基于ActionScript 2.0Movie,这个时候你要在你的Movie中使用ActionScript 1.0,那么你就必须亲自定义一个intrinsic类了。
正如我们所知道的,ActionScript 1.0中是没有严格数据类型的。这也并不那么糟糕,但它也不是什么好事。在MX 2004及其后来的版本中,你需要这些数据类型定义来帮助你维护工程的有效性和高效性。这就是intrinsic类出现的原因。
我们假设你有一个非常完美的类,它可以帮助你完成现在新的工程中的大量任务,但可惜的是,这个类使用ActionScript 1.0Ok, no problem,你可以把ActionScript 2.0ActionScript 1.0无缝的结合。你不需要用ActionScript 2.0来重新写一遍你的类,你唯一所要做的事情是写一个instrinsic 类,并且罗列出已经使用的那些数据类型 按此在新窗口浏览图片 [ intrinsic 类是一个已存在类的类型定义 ]
所有你需要做的事情就是去创建一个与原先类同名的ActionScript 2.0类,并且标记为instrinsic,就像你把类标记为dymanic(如果需要的话,也可以把它们两个同时加上)。在这个文件中,正确输入原先类所有的属性和方法,但不需要定义。这样,你就不需要完全重写一遍类,因为在新类中不许要包含方法和属性的定义。这里有一个这样的例子,代码如下: //在 Wonderful.as 中可以使用如下代码:
intrinsic class Wonderful
{
var msg:String;
function DosomethingWonderful(allow:Boolean):Void;
}
// ActionScript 1.0 class in main Flash movie
var Wonderful = function(msg)
{
this.message = msg;
};
Wonderful.prototype.doSomethingWonderful = function(allow)
{
if (allow)
{
trace(this.message +" is Wonderful!");
}
};
var ItsA:Wonderful = new Wonderful("Life");
ItsA.doSomethingWonderful("yes"); // 错误: 类型不匹配;
ItsA.doSomethingWonderful(true); // 正确
虽然这个类是用ActionScript 1.0来定义的,编译器仍旧可以辨别出数据类型不匹配的情况,比如在刚才的doSomethingWonderful方法中传入一个String类型的参数,这要归功于在Wonderful.as文件中定义的同名instrinsic类。有一件事情须要清楚的是,如果使用instrinsic类这种方式的话,在你原有类的定义中必须使用var关键字。否则就会有错误出现,因为编译器会认为你事实上正在使用一个已经存在的instrinsic类,而不是正在创建一个新的类。

MX 2004的组建也需要Intrinsic 类,因为新一代的组建在他们使用之前已经被编译。Intrinsic类给编译器一些信息,它需要一些组件内部已经包含的信息,这样当你在你的Movie中使用了一个组件时它可以检查它的用法已经数据类型是否匹配。instrinsic类并没有被编译到swc文件中,instrinsic类只是一些定义,并没有一些实质性的代码。 关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号