- 浏览: 351735 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lliiqiang:
在功能上,由于flex不支持加载外来的类的反射机制,所以可以通 ...
Flex Module专题 -
迪伦少校:
工程报错呢?。。
关于DEGRAFA的简介 -
chwnchwn:
不错的东西
关于DEGRAFA的简介 -
lorry1113:
学习了,多谢!!!!
重写FLEX组件 -
cuixuxucui:
var str:String = "";v ...
AS3 Array学习笔记
smartblack整理,转载请注明出处
36.我现在想在flex里调用JS方法,我要怎么办呢?
答:直接在AS中使用ExternalInterface.call()来调用JS方法。如:
import flash.external.ExternalInterface;
ExternalInterface.call("simpleJSFunction");
ExternalInterface.call("simpleJSFunctionWithParameters","myParameter");
var result:String=ExternalInterface.call("simpleJSFunctionWithReturn");
37.我想用JavaScript调用ActionScript函数,我要怎么办呢?
答:使用ExternalInterface.addCallback在JavaScript里设置对Flex的回调方法并且在JavaScript里调用ActionScript方法。
AS:
ExternalInterface.addCallback("function1",callback1);
privatefunctioncallback1():void
{
Alert.show("callback1executed");
}
JS:
container[swf].function1();
38.FileReference 请说下此对象的几个相关事件
答:browse(typeFilter:Array = null):Boolean显示一个文件浏览对话框,让用户选择要上载的文件。
cancel():void取消正在对该 FileReference 对象执行的任何上载或下载操作。
download(request:URLRequest, defaultFileName:String = null):void打开对话框,以允许用户从远程服务器下载文件.
upload(request:URLRequest, uploadDataFieldName:String = "Filedata", testUpload:Boolean = false):void开始将用户选择的文件上载到远程服务器。
1.as2与as3的最主要区别是什么?
答:首先,as2和as3是完全不同的语言,几乎没有兼容性可言。as2编译用的AVM1虚拟机,as3用的AVM2,速度快,提供了一些基础异常处理。 as3是纯的OOP,强类型语言。as2不是。具体的差别有太多太多。
2.flex的开发框架有哪些,它们有什么优缺点?
答:最常见的当然是Cairngorm、Puremvc了,此外还有Mate,Swiz等等,据说被广泛应用的已经有10几款了。Cairngorm作为Adobe官方出品,有着贵族血统的它比较全面,是这些框架中已知bug最少的,但是基于他的应用相对臃肿复杂一些,需要对每个可以被触发的事件写一个对应的Command,编码量巨大,并且单元测试很不容易,不适合敏捷开发。Puremvc应该是现在用的最多的as框架了。比较完善、并且与Cairngorm相比,更适合中小型应用的开发,它与Cairngorm一样,也是以MVC模式为中心,并以Façade作为中央存储器的单件类的形式进行开发的。说下Mate,它是一个比较奇怪的框架,是基于标签的事件驱动型的。也就是说你不能再随意的写as类的,在使用Mate的情况下,只能用MXML来做这些事情。Swiz是Mate的孪生兄弟,长的挺像,没具体用过,不大了解。
3.在flex开发中,很多代码都写在mxml文件里,为了做到mvc模式,你是怎么处理的。
答:我认为mxml并不影响mvc模式啊。分两种情况来讨论,首先,是自己创建整个应用结构的时候,那我们可以手动将UI所在的mxml归为一类,然后由Mediator去操作或者说控制这些组件既可了,然后Mediator又统一交给Controller去操作。如果采用其他框架来进行开发的话,那就更不用来考虑这个问题了,像Cairngorm、Puremvc之类的框架已经很好的为我们解决了这些问题。只要按照它们的使用规范来进行开发,自然没有问题。
4.如果发生内存泄露,你是如何解决的?
答:在profile观察中已经内存泄漏是没有很好的解决办法的,至少我不知道,我能做的只是尽量去避免这种情况的发生,比如说注意不要循环引用,特别是在使用Timer的时候要格外注意,不要忘记全局对象上的引用的清除,在创建控制器和模型的时候要注意一定要使用单件模式。在addEventListener时候尽量采用弱引用、自引用、或者子对象引用,以避免内存泄漏。
5.as3.0垃圾回收器是如何工作的?
答:flash player 8之前采用的是引用计数法,在flash player 8 之后用的是标记法,简单的说就是:从应用的根节点开始,遍历所有其上的引用,标记每个它所发现的对象。然后迭代遍历每个被标记的对象,标记它们的子对象。这个过程递归进行,直到Player遍历了应用的整个对象树并标记了它所发现的每个东西。在这个过程进行的时候,可以安全地认为,内存中那些没有被打标记的对象没有任何活动引用,因此可以被安全地释放内存。一般来说,flash player采用的是一种低频的垃圾回收机制,Flash Player的垃圾回收发生在Flash Player需要另外请求内存之前。但并不是每次应用申请内存时都会导致垃圾回收的执行,只有当Flash占用的内存紧张到一定程度时才会执行真正的垃圾回收,一定程度上取决于客户端计算机的物理内存的大小。
6 flex和后台语言是如何交互的?
答:见第35题。
7.你是如何处理前端速度慢的问题?
答:flex前端速度慢 其实仔细说应该分2部分,1.是flex生成的swf由于SDK庞大的关系,swf体积也跟着庞大了,这我们可以做的就是用Module动态加载,还有就是RSL了。2.处理速度慢,远程方法速度慢,这是AVM的硬伤了,基本没有很好的解决方法,我们能做的只是让这个异步进行的更完美一些,让用户在等待的过程中,做其他的事情,以至于让用户忽略这段等待的时间。
8.flash与flex是如何协调开发的?
答:这个问题可以这样来理解,如果是确实需要用到FLEX SDK的应用,那我们就可以建立一个flex工程,具体需要flash做UI的时候,输出成swc作为flex的skin,如果说并不需要flex sdk,只是为了编码方便而选择flex的话,那我们只要建立一个as工程,让flex作为flash的编码器。
组件
1.我不想在容器里显示滚动条怎么办?
答:指定horizontalScrollPolicy和verticalScrollPolicy为off
2.请问Flex bulider3可以创建几种不同的项目?
答:三种。Flex Project、 AS Project 和Flex Library Project。
3.你了解RSL嘛?请说明下RSL的使用方法,以及使用RSL为了解决什么问题?
答:RSL(Runtime shared libraries)即动态链接库,在程序运行时由FlashPlayer动态加载。静态链接库是SWC文件,通过编译器的library-path和include-libraries编译进应用程序。采用静态链接的应用程序SWF会产生比较大的文件以及更长的下载时间。使用RSL的应用程序载入时间短且文件比较小,而且提高了内存使用效率,只是在开始需要花点时间下载RSL。RSL的强大体现在多个应用程序共享公共代码时,因为RSL只需要被下载一次,多个应用程序动态链接到相同的RSL,访问其中已经缓存在客户端的资源。
使用RSL:
(1).在项目文件夹中点右建,选择"properties"-"Flex Build Path"-"Library Path"
(2).该选项卡上我们看到"FrameWork linkage",默认是"Merged into cdoe"(FLEX4默认是RSL)
(3).点开下拉,选择"runtime shared library(RSL)"
(4).针对自定义的SWC,修改其link type为RSL,选择None,同时勾上Automatically extract swf to deployment path(自动将SWF提取到部署路径)。如果想对不同域的RSL共享,则选择Digests(摘要),同时指定其Policy file url(策略文件)。具体可参考FLEX SDK中的SWC文件处理方式。
(5).点击OK
4.请问SWC是做什么用的,怎么样自己制作一个SWC?
答:静态链接库是SWC文件,通过编译器的library-path和include-libraries编译进应用程序。
新建Flex Library Object或使用compc命令可以制作SWC。
5.flex生成出来的文件都是很大,请问你用什么办法进行缩小呢?
答:(1)RSL
(2)Module
(3)外部加载资源
6.请问trace( NaN == NaN ) 结果为true 还是false,为什么?
答:NaN 具有独特的数学性质,任何与其相关的比较都会得到false的计算结果。改用全局 isNaN()函数检测NaN值,如下所示:
trace(NaN == NaN); // false!
trace(NaN != NaN); // false again!
trace(isNaN(NaN)); // true
7.warning: unable to bind to property ” on class ‘Object’ (class is not an IEventDispatcher) 在使用ItemRender时,经常会出现这种警告,请问想去除的话怎么办呢?
答:ArrayCollection的子元素是无法作为数据源绑定的。可以声明中间变量,在override set data时将ArrayCollection的子元素传入,然后再将中间变量作为新的绑定源即可。
8.现在流行MVC,但是as代码有的时候还是大部分写在mxml里面,请问我想代码分离怎么办呢?
答:严格按照MVC框架规范书写代码。如果还是不行,可以考虑重写组件或者从业务逻辑上解耦。没必要用source引用外部as文件来达到代码分离,那没有意义。
9.我想继承UIComponent重新写一个正方形的组件,我应该怎么做?请说重点部分即可.
答:(1)使用get、set初始化组件边长等必要数据,指定能通过MXML标记设置的属性。
(2)如果组件内有子元素,覆盖createChildren()方法,使用addChild加入这些子元素。
(3)覆盖commitProperties()方法,提交边长等组件属性变化。
(4)覆盖measure()方法,设置组件缺省size和缺省最小size。
(5)覆盖updateDisplayList()方法,依据布局确定子元素大小及位置。最后,使用graphics类的drawRect方法画出正方形边框。
10.常用的几个切换数据的组件比如: TabNavigator等都有属性 creationPolicy 你知道这种策略的使用方式是什么嘛?以及优,缺点呢?
答:延迟实例化。优点是可以更快地加载组件,缺点是首次访问其他组件时,由于需要重新加载此组件,可能会有一定的延迟。
11.我想在application里获取当前运行的URL,我要怎么获取.
答:Application.application.url
12.请说下事件里的currentTarget 和 target的区别?
答:在事件流的过程中,目标阶段确定的目标对象由Event中的target属性来记录,冒泡阶段移动的游标则由currentTarget来记录。事件对象冒泡过程中每往上移动一级,就会克隆出一个仅与前副本currentTarget不同的新副本。
13.请列举下你常用的几种effects,并说明使用原因.
答:SoundEffect,为了播放MP3
TweenLite很多特效
14.HBox,VBox和canvas有什么区别呢?试说出其中几点
答:canvas只有绝对布局,没有布局管理器。
HBox,VBox则相反,没有绝对布局,只有相对布局。
15.请问我想在list里选中多行信息,我要怎么做呢?
答:设置allowMultipleSelection为true
16.Alert里面有几个属性,我想设置图片怎么办呢?
答:使用iconClass属性指定图片
17.请问你是否设置过样式呢,我想动态设置样式怎么办呢?如果我想在as代码里设置样式我又要怎么办呢?
答:使用setStyle()
18.你能说一下UIComponent的生命周期嘛?以及相关的使用场合呢?
答:(1)调用组件构造函数
(2)设置组件属性
(3)调用addChild()将组件添加到父组件显示列表
(4)组件的parent属性设置为对父容器的引用
(5)设置样式
(6)组件分发preinitialize事件
(7)调用组件createChildren()
(8)调用 invalidateProperties(),invalidateSize(),invalidateDisplayList()失效方法,FLEX将在下一个“渲染事件”(render event)期间对相应的commitProperties(),measure(), updateDisplayList()方法进行调用。这个规则唯一例外就是当用户设置组件的height 和width 属性时, Flex 不会调用measure()方法。也就是说,只有当组件的explicitWidth 和explicitHeight 属性是NaN 时Flex才会调用measure()方法。
(9)组件分发initialize事件。此时组件所有的子组件初始化完成,但组件尚未更改size和布局,可以利用这个事件在组件布局之前执行一些附加的处理
(10)在父容器上分发childAdd事件
(11)在父容器上分发initialize事件
(12)在下一个“渲染事件”(render event)中, Flex 执行以下动作:
a.调用组件的commitProperties()方法
b.调用组件的measure()方法
c.调用组件的layoutChrome()方法
d.调用组件的updateDisplayList()方法
e.在组件上分发updateComplete事件
(13)如果commitProperties(), measure(),updateDisplayList()方法调用了invalidateProperties(),invalidateSize(),invalidateDisplayList()方法,则Flexh 会分发另外一个render事件
(14)在最后的render事件发生后, Flex执行以下动作:
a.设置组件visible属性使其可视
b.组件分发creationComplete事件,组件的大小(size)和布局被确定,这个事件只在组件创建时分发一次
c.组件分发updateComplete事件。无论什么时候,只要组件的布局(layout),位置,大小或其它可视的属性发生变化就会分发这事件,然后更新组件来正确地显示。
19.请问你是否发现过 flex3里的bug呢,请列举一些?
答:flex Module内存泄露,对象无法释放。
发表评论
-
推荐一个flashbuilder的插件sourcemate
2011-07-01 13:12 3865最近使用了flash develop,不太适应,又换回了fla ... -
Flash Builder 无法概要分析
2011-06-23 09:48 3756概要分析出了问题,GOOGLE了一下,有帖子讲到这个: ht ... -
AS3单例、反射---mx.core.Singleton
2010-11-18 14:59 2902一、先说一下AS3中的反射 public fun ... -
网上搜集的一些FLEX面试题(三)
2010-05-20 23:04 4340smartblack整理,转载请注 ... -
网上搜集的一些FLEX面试题(一)
2010-05-20 22:53 4236Flex面试题 smartblack整理,转载请注明出 ... -
一个具有EXCEL风格的FLEX组件MecGrid
2010-03-12 10:12 7817前言:几个月前,因为项目需要探索了MecGrid,后来种种原因 ... -
[转帖]开发Flex程序要注意的问题
2010-03-03 14:24 1586原帖地址:http://www.zhuoq ... -
构建Flex应用的10大误区(转自InfoQ)
2010-01-11 12:10 1432原文地址:http://www.infoq.com/cn/ne ... -
Flex是咋回事之三 谁用谁知道
2009-12-25 08:02 2155一项技术,从概念提出到技术研发到商业发布,再到实际应用,最终将 ... -
Flex是咋回事之二 前世今生
2009-12-23 18:37 1616转眼已是岁末,让我们回顾一下历史,展望一番未来。啥,没有未 ... -
Flex是咋回事之一 集CS和BS之大成的RIA
2009-12-22 09:28 3051用了一年多Flex,感触多多。偶尔有同行的朋友问我啥是Flex ... -
Flex Module专题
2009-12-07 10:42 11648主要参考书目: 《ADOBE FLEX3 DEVELOPER ... -
重写FLEX组件
2009-05-22 20:11 12982一、为什么要重写组件 1、在FLEX已有组件无法满足业务需 ...
相关推荐
从网上搜集的比较全的Flex面试题目及答案,主要涉及Flex基础知识和ActionScript3.0的语法细节,希望对大家有所帮助
### Flex面试题解析 #### 1. 修改默认背景颜色 - **问题**: 使用FlexBuilder 3建立一个新的.mxml页面时,默认背景为蓝色。如何修改这一设置,使得下次创建时背景不再是默认的蓝色? - **解答**: 要修改Flex项目的...
Vue.js 是一款轻量级的前端JavaScript框架,以其渐进式特性和组件化开发模式而受到广泛欢迎。...以上仅是Vue面试题的一部分,深入学习还需要掌握Vue的高级特性,如Vue CLI的配置、插件开发、服务器渲染、性能优化等。
- 使用Flexbox布局,设置`flex-wrap: wrap`和`align-items: flex-start`。 2. **判断数据类型**: JavaScript提供了多种方式判断数据类型,如`typeof`操作符,`instanceof`运算符,或者`Object.prototype....
### 重要IT面试知识点解析 #### 1. JDK 1.5 特性 - **自动装箱/拆箱**:允许基本数据类型与包装类之间自动转换。 - **泛型**:支持在编译时检查类型安全,并伴有类型参数的方法和类。 - **枚举**:提供了一种定义...
以下是一些关键概念的详细解释: 1. 开发工具: 开发者常用的前端工具包括Visual Studio Code、Sublime Text、Atom等,它们提供了代码高亮、自动补全、版本控制集成等功能,极大地提高了开发效率。例如,Sublime ...
leetcode 答案 ...flex,flex常用属性,以及相关作用 BFC是什么 Node 项目里面用nodejs做了啥 express框架的设计思想 nodejs的eventEmitter的实现 express的中间件系统是如何设计的 express 动态路由匹
7. **面试准备**:包括了“JAVA就业面试题大全”和“7K月薪面试题之交通灯管理系统”,这些资源帮助求职者准备面试,理解常见的技术问题和实际项目经验的要求。 8. **设计模式**:“Java企业设计模式”讨论了在Java...
百度地图开发java源码 blog 听说可以放1000年??? 收集的文章渠道太多,集中放这里看。...一些面试题 tools :生成特殊字符 css 相关 :怎么使用 scss :阿里icon :flexbox 草案 :flex 布局小游戏