`
柴秉承
  • 浏览: 87323 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Flex常见问题

    博客分类:
  • FLEX
阅读更多

Flex面试题(一) 收藏

  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("simpleJSFunctionWithParame ters","myParameter");

  var result:String=ExternalInterface.call("simpleJSFunc tionWithReturn");

  37.我想用JavaScript调用ActionScript函数,我要怎么办呢?

  答:使用ExternalInterface.addCallback在JavaScript里设置对Flex的回调方法并且在JavaScript里调用ActionScript方法。

  AS:

  ExternalInterface.addCallback("function1",callback 1);

  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)开源组件的使用

分享到:
评论

相关推荐

    flex常见问题100题

    Flex 常见问题 100 题 Flex 是一个功能强大且灵活的开发工具,但是在实际开发过程中,开发者经常会遇到各种问题。以下是 Flex 开发过程中的常见问题 100 问答。 改变输出 swf 的尺度、违景颜色或帧频 在 Navigator...

    FLEX常见问题总汇

    在使用Adobe Flex开发应用程序时,可能会遇到各种各样的问题。...以上解答了Flex编程中的一些常见问题,希望能对你的开发工作有所帮助。在实际使用中,可能还会遇到更多复杂情况,建议查阅官方文档或在线社区寻求帮助。

    flex和java整合常见问题分析

    ### Flex与Java整合常见问题分析 #### 一、前言 在进行Flex与Java整合的过程中,往往会遇到一些常见的技术难题。本文将针对搭建Flex+Java+Oracle项目的实践过程中所遇到的问题进行深入剖析,并提供相应的解决方案...

    Flex4.5常见问题总结

    ### Flex4.5常见问题总结 #### 一、Flex4.5组件开发模型与特性 Flex4.5采用了一种基于组件的开发模型,开发者可以通过继承现有组件并扩展其功能来构建自己的应用程序。这一模型的核心优势在于提高了代码的复用性,...

    Java和Flex交互常见问题及解决

    ### Java与Flex交互中的常见问题及其解决方案 在Java与Flex技术进行交互的过程中,经常会遇到一些典型的问题,这些问题可能涉及到安全性、数据传输格式以及字符编码等方面。本文将详细探讨以下几个方面: 1. **...

    15_flex布局常见问题.html

    15_flex布局常见问题

    Flex和AS学习书籍下载地址清单

    8. **Flex 常见问题解答** (`flex¼.txt`) - **简介**:解答了一些常见的Flex问题。 - **链接**:[下载地址](http://www.fs2you.com/files/d39b0fa1-ca77-11dc-a74c-0014221f4662/) 9. **Flex 与 LCDS、Java 集成...

    Flex使用问题汇总

    本篇文章将总结一些常见的Flex使用问题及其解决方案。 1. **改变验证控件错误提示的默认样式**: 当Flex中的验证控件出现错误时,其默认样式可能不符合设计需求。要修改这个样式,可以在自定义的CSS文件中重写`....

    flex布局Flex实现常见布局的汇总

    flex全称Flexible Box模型,顾名思义就是灵活的盒子,不过一般都叫弹性盒子,所有PC端及手机端现代浏览器都支持,所以不用担心它的兼容性,有了这玩意,妈妈再也不用担心我们的布局。 先简单介绍一下,要使用flex...

    Flex中很多的帮助文档已经资料和一些常见问题的解决方案

    在本压缩包中,您将找到一系列与Flex相关的学习资料,包括帮助文档和常见问题的解决方案,这些资料对初学者和有经验的开发者都非常有价值。 1. **Flex基础**:Flex提供了强大的组件库,允许开发者构建用户界面,...

    Flex常见运行错误查询表

    根据提供的标题、描述以及部分内容,本文将详细解析Flex中常见的运行时错误及其对应的错误代码,同时提供相应的解决方案或解释。 ### 错误1000:系统错误 **描述**:此错误通常与系统资源有关,表明当前系统无法...

    Flex 常见 编码规范

    Flex编码规范是开发高质量Flex应用程序的基础,它旨在提高代码的可读性、可维护性和团队协作效率。以下是一些重要的Flex编码规范细节: 1. **缩写**:尽量避免使用缩写,除非它们是广泛认可的,例如`acc`代表...

    Flex资料大全(Flex白皮书 Flex cookbok Flex编程指南 Flex设计模式等)

    它涵盖了Flex开发中遇到的各种常见问题,如用户界面设计、数据绑定、事件处理、动画制作等,是开发者在实际开发中快速查找和解决问题的得力工具。 3. **Flex编程指南**: Flex编程指南可能详细阐述了Flex开发过程...

    Flex问题解决大全

    本文将深入探讨Flex中的关键概念和技术,帮助开发者解决常见的Flex问题。 首先,Flex提供了一个基于组件的开发模型,允许开发者通过继承和扩展现有的组件来构建应用程序。这极大地提高了开发效率,因为大部分UI元素...

    Flex 常用代码

    1. **解决Flex中文乱码问题** 在Flex应用中,如果遇到中文显示为乱码,可以使用`System.useCodePage = true;`来启用代码页支持,确保中文字符正确显示。这段代码应该在应用启动时执行。 2. **通过`doubleClick`...

    flex flex和 java交互

    例如,`flex-messaging-common.jar`、`flex-messaging-core.jar`和`flex-messaging-amf.jar`等都是常见的AMF通信所需库文件。 通过这个入门实例,开发者可以快速理解Flex与Java交互的基本原理,并为进一步的复杂...

    FLEX问题总汇 (总结篇)

    在本文中,我们将深入探讨关于FLEX的一系列常见问题及其解答,这些问题涵盖了FLEX与HTML的集成、系统资源访问、文件操作、数据类型处理、对象访问、界面元素控制、模块通信、编码格式、数据传输、多选功能、图表定制...

    flex与 java 通信常见错误

    ### Flex与Java通信常见错误分析 #### 一、Send Failed 错误 在Flex与Java进行通信时,可能会遇到如下的RPC Fault错误: ``` RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" ...

    Flex3与Flex4对比

    - **模板支持**:Flex4的高级版本支持模板功能,可以简化常见任务的实现。 - **基于状态的代码视图**:这一特性在Flex4的高级版本中提供,可以更清晰地管理不同状态下的代码逻辑。 ##### 7. 使用数据 - **服务检查...

Global site tag (gtag.js) - Google Analytics