加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

网上搜集的一些FLEX面试题

发布时间:2020-12-15 01:25:20 所属栏目:百科 来源:网络整理
导读:smartblack整理,转载请注明出处 ? 1.?使用Flex Bulider3?建立一下新的.mxml?的页面时默认的背景是蓝色的,?请问用什么办法能修改掉此背景颜色,?以至于下次创建时背景不是为默认的蓝色的呢??请写出你认为正确的方法。 答:修改sdk/frameworks/projects/framew

smartblack整理,转载请注明出处

?

1.?使用Flex Bulider3?建立一下新的.mxml?的页面时默认的背景是蓝色的,?请问用什么办法能修改掉此背景颜色,?以至于下次创建时背景不是为默认的蓝色的呢??请写出你认为正确的方法。

答:修改sdk/frameworks/projects/framework/default.css?里Application?的backgroundColor: #0000FF;

?

2.?使用Flex Bulider3?如何跟踪程序?

答:我知道的三种1.trace() 2.?设置断点?3.?当不在调试模式时可以调用as?的Alert.show()?或js?的alert()如:navigateToURL(new URLRequest("javascript:alert(traceMsg)"),"_self");

?

3.?请问enterFrame?和timerEvent?这2?个事件有什么区别??请说下具体的使用方法和相关的使用场合?

答:enterFrame?是按帧发生,timeEvent?是根据设置的Timer?类参数发生。如:

用ENTER_FRAME?控制小球圆周运动:

addEventListener(Event.ENTER_FRAME,ballMove);

用TIMER?控制小球圆周运动:

var myTimer:Timer=new Timer(83.3,0);//?关于该数的设置见TIMER?类的说明

myTimer.start();

myTimer.addEventListener(TimerEvent.TIMER,ballMove);

?

4.?请说下你理解AS3?的事件机制是什么机制??你认为正确的就可以说出来.

答:建立一个完整的事件机制需要四个步骤:注册侦听、分发事件、侦听事件、移除侦听。建立成功后,触发事件,事件流会进行捕获、目标和冒泡三个阶段。捕获阶段由FP?沿显示列表从根容器往下层层寻找触发事件的目标对象,找到后即进入目标阶段。然后,事件对象从目标对象再次沿显示列表往上移动至根容器,遇到注册侦听的节点就调用侦听函数。如果想中途中断冒泡,可以使用stopPropagation?。

?

5.?请问addEventListener?里面有几个参数,?你能说出具体的使用方法嘛?

答:addEventListener(

? type:String,????事件的类型

? listener:Function,????监听函数

? useCapture:Boolean = false,????是否打开捕获功能

? priority:int = 0,????监听器优先级别

? useWeakReference:Boolean = false????是否使用弱引用

)

?

6.?请问我想判断一个字体是否是数字,?用什么办法去判断呢?

答:isNaN(parseInt(strPara)?或?strPara is Number

?

7.?请问我想判断一个字符或者一个对象的类型怎么判断呢?

答:typeof(obj)

?

8.?请问你了解?internal?控制符么??能说下具体使用方法和场合嘛?

答:internal?是默认的包内访问,体现了封装思想和package?模块化思想。举例来说,A?类需要使用B?类和C?类的方法和属性,但又不希望它们对其他类暴露,只要将A,B,C?放入同一包内,包外的其他类就无法使用B?,C?类了。

?

9.?我想在某一点不去执行任何内容,?也就是说我想停止执行了,?你知道要怎么做嘛?

答:设置断点

?

10.?请问?undefined?和?null?是否一样,?如果不一样能否说出其中的区别呢?

答:undefined?是尚未初始化的无类型变量或未初始化的动态对象属性的特殊值。null?是一个可以分配给变量的或由未提供数据的函数返回的特殊值。它们的相同之处在于都未初始化,不同在于undefined?是无类型或动态类型的。如:

var v1;trace(v1);//undefined

var v2:*;trace(v2);//undefined

var v3:Object;trace(v3);//null

?

11.?创建常量知道怎么创建嘛??说下你是怎么创建的.

答:const PI:Number = 3.1415926; public static const STARTUP:String = "startup";

?

12.?请问用什么方法自定义一个事件呢??说下具体的方式.

答:(1)?扩展Event?类或其子类

?????? (2)?定义一个static const?常量作为事件的type?传入构造函数

?????? (3)?定义一个私有变量作为事件的Data?保存数据,并为其添加getter?和setter

?????? (4)?覆盖toString()?和clone()?方法

?

13.?请问怎么样检测本机的内容呢,?比如说,?我想知道本机的操作系统,?是否有视频等这些.

答:flash.system.Capabilities.os?当前的操作系统

flash.system.Capabilities.hasStreamingVideo?系统是否可以播放视频流

?

14.?请问用什么办法解决安全域的问题??如果你不知道安全域的问题的话,?可以在本机中绑定一下图片,?然后再放到服务器上,?就会出现此问题了.

答:配置安全沙箱的策略文件crossdomain.xml?放置到服务器根目录,如:

<?xml version="1.0" encoding="UTF-8"?>

<cross-domain-policy>

?????? <allow-access-from domain="*" />

</cross-domain-policy>

?

15.?有三种基本数字类型:number,int,?和uint?请问有什么区别.?具体说一下.

答:number?数字类型包含浮点型(?正0?负); int?整型(?正0?负); uint(?无符号整型)

?

16.parseInt?此方法转化为int?型的方法,?请问你知道此方法的第二个参数是什么意思嘛?

答:指定第一个参数字符串的进制,范围为2-36?。例如parseInt(“100”,2)=4

?

17.Math.round( )?,?Math.floor( )?和Math.ceil( )?三个方法都是四舍五入,?请问有什么区别?

答:round?是取最接近的整数,即原数+0.5?后取整;floor?向下取整;ceil?向上取整

?

18.?请问一个数组里可以放不同的类型嘛?

答:可以,如var x:Array = ['a',1,new Button()];

?

19.var letters:Array = ["a","b","c"];?我想在这个数组里搜索‘c?’字符,?请问怎么办?

答:for(var i:* in letters)

?? ??if(letters[i] == 'c') trace("c's position is " + i);?或

if(letters.toString().indexOf('c') > 0)

?? ??trace( "c's position is " + letters.toString().indexOf('c') );

?

20.?怎么样转换数组为字符串,?怎么样将字符串转化为数组?

答:数组->?字符串:trace(new Array('a','b','c').join("").toString());

字符串->?数组:?var arr:Array = new String("a,b,c").split(',');

?

21.?我想创建的视图居中怎么办?

答:布局策略里面限定为居中,即horizontalAlign="center" verticalAlign="middle";?或者在每个控件都以舞台的中心作为相对坐标来计算各自的xy?值。

?

22.?请问知道层级的概念嘛??如果知道请问怎么样交换2?个组件的层级呢?

答:层级表示的是显示对象在显示列表中的位置,从第0?层开始,位于最下面。

交换组件层级可以使用id?交换,也可以直接交换层级索引。如:

my_sprite.swapChildren(my_ball2,my_ball1);

my_sprite.swapChildrenAt(2,1);

?

23.?请问你知道loader,URLLoader,URLStream?这个三种动态加载资源的具体使用场合,?以及有什么区别嘛?

答:(1)Loader?像2.0?中MovieClip?的loadMovie?功能,用于加载外部的图片和SWF?文件。使用?load()?方法来启动加载。被加载的显示对象将作为?Loader?对象的子级添加。在使用Loader?加载数据,添加侦听事件时,一定要给Loader的contentLoaderInfo?属性增加事件,而不是给Loader?对象增加事件。

(2)URLLoader?类以文本、二进制数据或URL?编码变量值对的形式先从URL?下载数据,然后才将数据用于ActionScript。它会发出有关下载进度的通知,通过bytesLoaded?和bytesTotal?属性以及已调度的事件,可以监视下载进度。

(3)URLStream?类提供对下载URL?的低级访问。数据一下载,便可随即为应用程序使用,这和使用URLLoader?需要等到整个文件下载完不同。并且URLStream?类还允许在完成下载前关闭流。已下载文件的内容将作为原始二进制数据提供。

(4)URLStream?、URLLoader?、Loader?等读取外部数据的类,类里的load?方法参数值是URLRequest?对象。如:

var request:URLRequest=new URLRequest("httpURL?地址");

loader.load(request);

?

24.?如何把MouseEvent?的localX?和localY?属性转化成全局坐标?

答:全局坐标系:stageX,stageY?。原点位于舞台左上角。

本地坐标系:localX,localY?。原点位于相对组件的左上角。

内容坐标系:contentMouseX?和contentMouseY?。描述鼠标相对于整个容器内容的位置,用于当子组件的高或宽可能超出容器自身设置高宽的情况。

转换方法:

contentToGlobal?内容到全局坐标

contentToLocal?内容到本地坐标

globalToContent?全局到内容坐标

globalToLocal?全局到本地坐标

localToContent?本地到内容坐标

localToGlobal?本地到全局坐标

?

25.?请问我现在有一个正方形的图片,?我想把他做成圆形,?有什么办法呢??前提是用flex?或者as3

答:不清楚,是不是用BitMapData?的draw?方法实现呢?会的朋友请告诉我。

?

26.?请问新创建的一个sprite?能否被直接加到ui?容器里??如果不能请说出用什么办法能加入.

答:不能。先将sprite?加入一个扩展自UIComponent?的类,再加入UI?容器。

?

27.?我怎么设置把一个文本框,?设置成一个密码框?

答:将displayAsPassword?属性设置为true

?

28.?我想在文本框里只能输入abcd,?有什么办法能做到呢??如果我想输入除abcd?以外的其它都能输入又怎么做呢?

答:restrict=”a-d”?。restrict="^(a-d)"

?

29.?请问condenseWhite?这个属性在TextInput?里是表示什么意思?

答:仅会应用于通过htmlText?属性设置的文本,默认为false?。当设置为true?时,会删除文本中额外的换行和空白。

?

30.?我现在刚创建的文件的text?为?this is a text,?我想设置光标在?is?上,?请问怎么设置?

答:触发事件,在侦听函数上让selectionBeginIndex=5,selectionEndIndex=6

?

31.?请问怎么样在文本框里添加超链接?

答:(1)?使用文本框的htmlText?属性添加必须以"event:"?开头的超链接,如<a href='event:geturl|http://***/|_blank'>?这儿</a>

(2)?添加对TextEvent.LINK?事件类型的侦听,如addEventListener(TextEvent.LINK,clickLink);

(3)"event:"?后面的字符串将被包含在侦听事件的text?属性里,如

private function clickLink(event:TextEvent):void

{

?? var cmdArray:Array = event.text.split("|");

?? if(cmdArray[0]=="geturl")

????? navigateToURL(new URLRequest(cmdArray[1],cmdArray[2]);

}

?

32.?我想获取系统里的字体,?请问怎么办?

答:import flash.text.Font;

var allFonts:Array = Font.enumerateFonts(true);

allFonts.sortOn("fontName",Array.CASEINSENSITIVE);

var fontsLength:int=allFonts.length;

for(var i:int=0;i<fontsLength;i++)

trace("?字体名称:"+allFonts[i].fontName+"?字体样式:"+allFonts[i].fontStyle+"?字体类型:"+allFonts[i].fontType)

?

33.substring( )?,substr( ),slice(),?请说下3?种解析字符串的不同之处,?以及适用场合?

答:substring(v1,v2):?截取从v1?到v2?的字符串,包括v1,?不包括v2

substr(v1,v2):?从v1?开始,截取v2?长度

slice(v1,v2):?类似于substring?,不过可以接受负值参数,表示倒数第几位

?

34. var fruits:XML =

Apple

Orange

Pear

Watermelon

;

以下有一个字符串,?我现在知道了color?为orange,?我想知道此color?相对应的name?节点的值,?我应该怎么做?

答:原题的XML?不规范。找到name?节点值可以用fruits.fruits(@color==’orange’).name

?

35.?请说下目前使用flex?和后台交互的几种方法,?以及适用场合.

答:(1)?基于AMF?消息格式的RemoteObject?组件,如Lcds/BlazeDs?,AMFPHP?等。

(2)?基于SOAP?消息格式的WebService?,对于使用SOAP?的服务器方便连接。

(3)?基于纯文本或拥有良好格式的XML?消息格式的HTTPService?组件。

一般来说,选用高效稳定的RemoteObject?中间件。


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


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

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

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

(2)?可以给变量声明前或变量getter setter?前使用[Bindable]?。如果getter?和setter?方法同名,那么给其中一个[Bindable]?,相当于给两个都用了[Bindable]?。

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

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

(2)?、MXML?的<mx:Binding>?方式。和{}?相同,可以多绑一,可以双向绑定。如<mx:Binding source="myInput.text" destination="myBtn.label"/>

(3)?、AS?的mx.binding/utils.BindingUtils?类的bindProperty ()?方法或bindSetter ()?方法

(4)?、AS?的mx.binding.utils.ChangeWatcher?的watch ()?方法

?

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

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

?

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

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

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

callLater?指定的函数在下次刷新屏幕的时候才会执行,这可以确保在对某个对象进行操作时对象已经创建完毕。当然也可以利用这个特点来制作渐进动画。

?

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

答:优点是合理分割了主Application?,模块化开发。更小的SWF?文件体积,配合RSL?和延迟加载策略,大大减少用户等待时间。缺点就是容易引起内存泄露。

?

24.?目前网页里都有导航,?请问在Flex?要做导航要注意一些什么呢??以及怎么样做呢?

答:注意默认的延迟实例化可能会导致某些对象为空。

?

25.?我想在一个错误的图片链接里,?定义一下默认的图片怎么做呢?

答:控制Image?的source?属性,当图片链接出现错误时,指定默认链接。

?

26.?请试写一个自定义的验证组件

答:

package myCompenent

{

??? import mx.validators.Validator;//?引用Validator?类

??? import mx.validators.ValidationResult;//?引用ValidationResult?类

??? public class myValidators extends Validator

??? {

??????? public function myValidators()//?构造函数

??????? {

??????????? super();

??????? }

??????? private var results:Array;//?定义一个数组,用以存储错误

??????? //?重写验证函数

??????? override protected function doValidation(value:Object):Array

??????? {

??????????? var s:String = value as String;

??????????? results = [];//?清空数组

??????????? results = super.doValidation(value);//?先用继承类中的doValida tion?方法验证

??????????? if (results.length > 0)//?如果验证时有错,返回错误信息

??????????????? return results;

??????????? if(s.length>6)//?自定义验证,字符长度不超过6

??????????? {

??????????????? //?记录出错信息

??????????????? results.push(new ValidationResult(true,"text","StringTooLong","?字符长度超过6?了"));

??????????? }

??????????? return results;

??????? }

??? }

}

27.?请说明下trigger triggerEvent?在验证组件里是什么意思,?具体怎么使用呢?

答:指定触发验证的组件和触发事件,默认是source?指定的组件和valueCommit?事件。

具体来说,多个validator?的source?对应多个组件,但它们的trigger?都指向一个提交按钮,triggerEvent?都是click。这样,只会在点击提交按钮时,才触发所有验证。

?

28.ExternalInterface,LocalConnection 2?者有什么区别?

答:ExternalInterface?是Flex?和Javascript?通迅使用;

LocalConnection?可以让运行于同一台计算机的本地应用程序进行交互,使用AMF3?格式通信,兼容以前版本。

?

29.?你是否使用过flex?的测试工具呢??请说明下具体是哪种,?以及使用方式,?你为什么使用这种工具?

答:没有,只听过FlexUnit?,FlexMonkey?。

?

30.?我能把CSS?编译成swf?嘛?

答:可以,在CSS?文件上右键选择Compile CSS to SWF?。

?

31.?请用as3?列举下你用过的模式

答:工厂模式,单例模式

?

32.Embed?绑定图片有什么缺点?

答:直接编译到swf?文件中,造成其体积过大。而且由于嵌入代码中,维护不便。

?

33.TitleWindow?的组件是可以拖动的,?我不想让他拖动我要怎么办呢?

答:让isPopUp?属性=false?,同时设置弹出窗口为模态窗口,禁止与其他窗口交互。

?

34.?你是否使用过profile,?你觉得这个工具怎么样,?优,?缺点是什么呢?

答:可以很方便地观察对象的创建和销毁,帮助检查内存泄露问题。

?

35.?你是否做过flex?前端的性能优化,?你觉得怎么做是比较完美的?

答:(1)?、避免容器的多级嵌套,减少相对尺寸、相对定位的使用。

(2)?、尽量使用轻量级的容器

(3)?、避免使用大体积的组件,比如DataGrid?、AdvancedDataGrid

(4)?、处理数据时多用分页的方式

(5)?、少使用setStyle

(6)?、使用延迟实例化加载子组件

?

36.?你是否了解E4X,?请说明一下优,?缺点?

答:E4X?是在ECMA-357?标准中定义的,并成为AS3?的一部分。优点是提供更简明和可读性强的语法从XML?中查找和提取数据。

?

37.?请列举一下你知道的影响性能的几个因素?

答:同上面第35?题。

?

38.?请说明一下ShareObject?的使用方法??以及优,?缺点?

答:getLocal()?用来指定存储在客户端的路径。

data?属性用来指定要存储的数据内容。

flush?方法负责把数据内容写入。

clear?方法用于清除储存的信息。

?

39.?请列举一下,?你认为不错的网站或者blog.

答:insideRIA?,AS?天地会,AIRIA?,javeeye?,N?神,杜增强,牛牛猪研究所,黑羽

40.?我现在给你100?万做一个flex?项目,?你认为成功的要素在哪呢?

答:(1)?数据和需求等传统软件项目的成功要素

(2)?模块化开发,MVC?框架

(3)swf?文件减肥,运行效率,内存泄露问题,前台优化

(4)?开源组件的使用

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读