flash AS3 的面试题
1、 请问你知道loader,URLLoader,URLStream这个三种动态加载资源的具体使用场合,以及有什么区别嘛?
答案
(1) Loader
Loader 类可用于加载 SWF 文件或图像(JPG、PNG 或 GIF)文件。 使用 load() 方法来启动加载。 被加载的显示对象将作为 Loader 对象的子级添加。
(2) URLLoader
URLLoader 类以文本、二进制数据或 URL 编码变量的形式从 URL 下载数据。 在下载文本文件、XML 或其它用于动态数据驱动应用程序的信息时,它很有用。
URLLoader 对象会先从 URL 中下载所有数据,然后才将数据用于 ActionScript。 它会发出有关下载进度的通知,通过 bytesLoaded 和 bytesTotal 属性以及已调度的事件,可以监视下载进度。
在加载非常大的视频文件(如 FLV 的视频文件)时,可能会出现内存不足错误。
(3) URLStream
URLStream 类提供对下载 URL 的低级访问。数据一下载,便可随即为应用程序使用,这和使用 URLLoader 时需要等到整个文件下载完不同。并且 URLStream 类还允许在完成下载前关闭流。 已下载文件的内容将作为原始二进制数据提供。
在 URLStream 中的读取操作是非阻塞模式的。 这意味着您在读取数据之前必须使用 bytesAvailable 属性来确定是否能够获得足够的数据 。 如果不能获得足够的数据,将引发 EOFError 异常。
2、 如何把MouseEvent 的localX 和localY 属性转化成全局坐标?
答案
使用:localToGlobal
// 创建point
var localPoint:Point = new Point( event.localX, event.localY );
// 得到全局坐标
var globalPoint:Point = event.target.localToGlobal( localPoint );
3、 请问condenseWhite 这个属性在TextInput里是表示什么意思?
答案
一个布尔值,指定是否删除具有 HTML 文本的文本字段中的额外空白(空格、换行符等等)。默认值为 false。condenseWhite 属性只影响使用 htmlText 属性(而非 text 属性)设置的文本。如果使用 text 属性设置文本,则忽略 condenseWhite。如果 condenseWhite 设置为 true,请使用标准 HTML 命令(如和),将换行符放在文本字段中。在设置 htmlText 属性之前设置 condenseWhite 属性。
4、 我想获取系统里的字体,请问怎么办?
答案
import flash.text.Font;
var allFonts:Array = Font.enumerateFonts(true);
allFonts.sortOn("fontName", Array.CASEINSENSITIVE);
for(var i:uint=0;i<allfonts.length;i++){
trace("字体名称:"+allFonts[i].fontName+"字体样式:"+allFonts[i].fontStyle+"字体类 型:"+allFonts[i].fontType)
}</allfonts.length;i++){
5、 substring( ),substr( ), slice(),请说下3种解析字符串的不同之处,以及适用场合?
答案
slice用来返回某位置到某位置数组的。但是字符串也支持这个方法,但是却不怎么用。建议字符串也不使用这个函数。substr和substring方法,substr,是位置A向后多少个字符,substring,是位置A到位置B。比较来,就是相对位置和绝对位置的区别。
6、 FileReference 请说下此对象的几个相关事件
答案
FileReference 类提供了在用户计算机和服务器之间上载和下载文件的方法。操作系统对话框会提示用户选择要上载的文件或用于下载的位置。每个 FileReference 对象都引用用户磁盘上的一个文件并且具有一些属性,这些属性包含有关文件大小、类型、名称、创建日期、修改日期和创建者类型(仅限 Macintosh)的信息。 FileReferenceList.browse() 或 FileReference.download() 方法browse() 方法打开一个操作系统对话框,提示用户选择要上载的文件
7、 as2与as3.的最主要区别是什么?
答案
首先,as2和as3是完全不同的语言,几乎没有兼容性可言。as2编译用的AVM1虚拟机,as3用的AVM2,速度快,提供了一些基础异常处理。 as3是纯的OOP,强类型语言。as2不是。具体的差别有太多太多
8、 as3.0垃圾回收器是如何工作的
答案
flash player 8之前采用的是引用计数法,在flash player 8 之后用的是标记法,简单的说就是:从应用的根节点开始,遍历所有其上的引用,标记每个它所发现的对象。然后迭代遍历每个被标记的对象,标记它们的子对象。这个过程第归进行,直到Player遍历了应用的整个对象树并标记了它所发现的每个东西。在这个过程技术的时候,可以安全地认为,内存中那些没有被打标记的对象没有任何活动引用,因此可以被安全地释放内存。一般来说,flash player采用的是一种低频的垃圾回收机制,Flash Player的垃圾回收发生在Flash Player需要另外请求内存之前。但并不是每次应用申请内存时都会导致垃圾回收的执行,只有当Flash占用的内存紧张到一定程度时才会执行真正的垃圾 回收,一定程度上取决于客户端计算机的物理内存的大小。
9、 flex和后台语言是如何交互的?
答案
无疑就这两种方法:remote object 或者是Http service
10、 请说下你理解AS3的事件机制是什么机制?你认为正确的就可以说出来.
答案
AS3事件流分三个阶段: 1.捕获阶段 (即由根节点流向子节点,检测每个节点是否注册了监听器) 2.目标阶段 (激发在目标对象本身注册的监听程序) 3.冒泡阶段 (从目标节点到根节点,检测每个节点是否注册了监听器) 当中涉及了两个属性target和currentTarget,target是事件的派发者,currentTarget是正在检测的对象,当开始了事件 流,事件的currentTarget属性处于不断变化中. PS:注册事件时捕获阶段默认是关闭的,无论事件是否开启了捕获,事件流只会两选一去 执行注册的监听程序关于EventDispatcher三个函数的参数: 1.addEventlistener(事件类型,监听函数,是 否打开捕获阶段,监听器优先级别,是否打开弱监听) 2.removeEventListener(事件类型,监听函数,是否打开捕获阶段) (前两个参数是必须的,如果注册监听器时打开了捕获阶段,那么第三个参数也是必须的,否则会出现错误) 3.dispatchEvent(new Event(事件类型,是否冒泡,是否可以取消事件)) 关于Event扩展有两点要注意: 1.可以定义字符串常量代表事件类型. 2. 构造函数必须调用父类的构造函数,super(type,bubbles,cancelable) 3.扩展Event可以使Event带自定义变 量,从而可以传递数据.
11、请问 undefined 和 null 是否一样,如果不一样能否说出其中的区别呢?
答案
不一样,null是没有值的意思。undefined是申明未完成,或者类型未定等情况
12、有三种基本数字类型: number, int, 和uint 请问有什么区别.具体说一下.
答案
number数字类型包含浮点型(正0负); int 整型(正0负); uint(无符号整型)
13、请问一个数组里可以放不同的类型嘛?
答案
可以

浙公网安备 33010602011771号