2024年4月8日发(作者:)

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。

生成出来的文件都是很大,请问你用什么办法进行缩小呢?

答:(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

g: 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,我要怎么获取.

答:

12.请说下事件里的currentTarget 和 target的区别?

答:在事件流的过程中,目标阶段确定的目标对象由Event中的target属性

来记录,冒泡阶段移动的游标则由currentTarget来记录。事件

对象冒泡过程中每往上移动一级,就会克隆出一个仅与前副本currentTarget不

同的新副本。

13.请列举下你常用的几种effects,并说明使用原因.

答:SoundEffect,为了播放MP3

TweenLite很多特效

,VBox和canvas有什么区别呢?试说出其中几点

答:canvas只有绝对布局,没有布局管理器。

HBox,VBox则相反,没有绝对布局,只有相对布局。

15.请问我想在list里选中多行信息,我要怎么做呢?

答:设置allowMultipleSelection为true

里面有几个属性,我想设置图片怎么办呢?

答:使用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内存泄露,对象无法释放。

20.列举出flex里面的几个绑定数据对象的方式

答:对自已的类或者变量添加绑定功能:

(1)类前使用[Bindable]表示所有属性都支持绑定,此类必须实现

IEventDispatcher接口。

(2)可以给变量声明前或变量getter setter前使用[Bindable]。如果getter和setter

方法同名,那么给其中一个[Bindable],相当于给两个都

用了[Bindable]。

使用拥有绑定功能的属性:

(1)、MXML的{}方式,如:{}{myVar1+myVar2}{myBtn}

(2)、MXML的方式。和{}相同,可以多绑一,可以双向绑定。如

(3)、AS的g/gUtils类的bindProperty () 方法或bindSetter

() 方法

(4)、AS的Watcher的watch () 方法

21.请问我自己定义了一个组件,我想在组件里的属性里设置几个默认值,我要怎

么设置呢?

答:在定义组件时,初始化组件属性时即可指定默认值。

ter()方法怎么使用,为什么要使用这个方法呢?

答:callLater(method:Function, args:Array):void

其中method是函数名,args是要传入函数的参数。

callLater指定的函数在下次刷新屏幕的时候才会执行,这可以确保在对某个对象

进行操作时对象已经创建完毕。当然也可以利用这个特点来制

作渐进动画。

23.请问你是否使用过module这种方法去做项目呢?他的优,缺点是什么呢?使用

组件的方式加载的话,他的优,缺点是什么呢?