Flex面试题集锦
- 格式:doc
- 大小:48.50 KB
- 文档页数:9
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个事件有什么区别?请说下具体的使用方法和相关的使用场合?没接触过,待学习中4.请说下你理解AS3的事件机制是什么机制?你认为正确的就可以说出来. 答:从应用程序到最外层的容器在到容器里的组件或容器遍历注册的事件,然后按照原路返回冒泡响应事件5.请问addEventListener里面有几个参数,你能说出具体的使用方法嘛?答:只用过前4个,参数分别为:Event名称,响应(回调)函数,是否冒泡时响应,Event级别6.请问我想判断一个字体是否是数字,用什么办法去判断呢?答:isNaN(parseInt(strPara) 或 strPara is Number7.请问我想判断一个字符或者一个对象的类型怎么判断呢?答:typeof(obj)8.请问你了解 internal 控制符么?能说下具体使用方法和场合嘛?答:同一个包里才能调用internal所定义的变量或对象9.我想在某一点不去执行任何内容,也就是说我想停止执行了,你知道要怎么做嘛?答:设置断点10.请问 undefined 和 null 是否一样,如果不一样能否说出其中的区别呢? 答:undefined未定义过的变量或对象; null没有被赋值或创建的变量或对象11.创建常量知道怎么创建嘛?说下你是怎么创建的.答:const PI:Number = 3.1415926;12.请问用什么方法自定义一个事件呢?说下具体的方式.答:先用as创建一个event类,然后<1>可以用addEventListener直接响应<2>也可以用元标签声明 [Event(name=事件名称,type=事件类)],然后创建对象->dispatchEvent(创建的对象)->mxml标签中使用事件名称来响应13.请问怎么样检测本机的内容呢,比如说,我想知道本机的操作系系,是否有视频等这些.答:flash.system.Capabilities.os 是系统类型flash.system.Capabilities.playerType 是视频播放器类型14.请问用什么办法解决安全域的问题?如果你不知道安全域的问题的话,可以在本机中绑定一下图片,然后再放到服务器上,就会出现此问题了.没接触过,待学习中15.有三种基本数字类型: number, int, 和uint 请问有什么区别.具体说一下.答:number数字类型包含浮点型(正0负); int 整型(正0负); uint(无符号整型)16.parseInt此方法转化为int型的方法,请问你知道此方法的第二个参数是什么意思嘛?答:进制 2 8 16 等17.Math.round( ), Math.floor( ) 和Math.ceil( ) 三个方法都是四舍五入,请问有什么区别?答:都是取整:round 是原数+0.5后取整(3.0->3.0+0.5=3.5->4;3.9->3.9+0.5=4.4->4);floor向下取整(3.4->3;3.9->3);ceil向上取整(1.3->2;2.8->3)18.请问一个数组里可以放不同的类型嘛?答:可以 var x:Array = ['a',1,new Button()];19.var letters:Array = ["a", "b", "c"];我想在这个数组里搜索‘b’ 字符,请问怎么办?答:/*1*/for(var i:* in letters)if(letters == 'c') trace("c's position is " + i);/*2*/if(letters.toString().indexOf('c') > 0)trace( "c's position is " + (letters.toString().indexOf('c')- letters.length + 1) );20.怎么样转换数组为字符串,怎么样将字符串转化为数组?答:数组->字符串:trace(new Array('a','b','c').join("").toString());字符串->数组: var arr:Array = new String("a,b,c").split(',');21.我想创建的视图居中怎么办?22.请问知道层级的概念嘛?如果知道请问怎么样交换2个组件的层级呢?23.请问你知道loader,URLLoader,URLStream这个三种动态加载资源的具体使用场合,以及有什么区别嘛?24.如何把MouseEvent 的localX 和localY 属性转化成全局坐标?25.请问我现在有一个正方形的图片,我想把他做成圆形,有什么办法呢?前提是用flex或者as326.请问新创建的一个sprite能否被直接加到ui容器里?如果不能请说出用什么办法能加入.27.我怎么设置把一个文本框,设置成一个密码框?28.我想在文本框里只能输入abcd,有什么办法能做到呢?如果我想输入除abcd 以外的其它都能输入又怎么做呢?29.请问condenseWhite 这个属性在TextInput里是表示什么意思?30.我现在刚创建的文件的text为 this is a text,我想设置光标在 is 上,请问怎么设置?31.请问怎么样在文本框里添加超链接?32.我想获取系统里的字体,请问怎么办?33.substring( ),substr( ), slice(),请说下3种解析字符串的不同之处,以及适用场合?34. var fruits:XML =AppleOrangePearWatermelon;以下有一个字符串,我现在知道了color为orange,我想知道此color相对应的name节点的值,我应该怎么做?35.请说下目前使用flex和后台交互的几种方法,以及适用场合.36.我现在想在flex里调用JS方法,我要怎么办呢?37.我想用JavaScript调用ActionScript函数,我要怎么办呢?38.FileReference 请说下此对象的几个相关事件一.简述Flex内存释放优化原则。
什么情况会发生内存经泄露,一旦有内存泄露,你会如何解决?FLEX内存释放优化原则:1. 被删除对象在外部的所有引用一定要被删除干净才能被系统当成垃圾回收处理掉;2. 父对象内部的子对象被外部其他对象引用了,会导致此子对象不会被删除,子对象不会被删除又会导致了父对象不会被删除;3. 如果一个对象中引用了外部对象,当自己被删除或者不需要使用此引用对象时,一定要记得把此对象的引用设置为null;4. 本对象删除不了的原因不一定是自己被引用了,也有可能是自己的孩子被外部引用了,孩子删不掉导致父亲也删不掉;5. 除了引用需要删除外,系统组件或者全局工具、管理类如果提供了卸载方法的就一定要调用删除内部对象,否则有可能会造成内存泄露和性能损失;6. 父对象立刻被删除了不代表子对象就会被删除或立刻被删除,可能会在后期被系统自动删除或第二次移除操作时被删除;7. 如果父对象remove了子对象后没有清除对子对象的引用,子对象一样是不能被删除的,父对象也不能被删除;8. 注册的事件如果没有被移除不影响自定义的强行回收机制,但有可能会影响正常的回收机制,所以最好是做到注册的事件监听器都要记得移除干净。
9. 父对象被删除了不代表其余子对象都删除了,找到一种状态的泄露代码不等于其他状态就没有泄露了,要各模块各状态逐个进行测试分析,直到测试任何状态下都能删除整个对象为止。
内存泄露情况:1. 引用泄露:对子对象的引用,外部对本对象或子对象的引用都需要置null;2. 系统类泄露:使用了系统类而忘记做删除操作了,如BindingUtils.bindSetter(),ChangeWatcher.watch()函数时候完毕后需要调用ChangeWatcher.unwatch()函数来清除引用,否则使用此函数的对象将不会被删除;类似的还有MUSIC,VIDEO,IMAGE,TIMER,EVENT,BINDING等。
3. 效果泄露:当对组件应用效果Effect的时候,当本对象本删除时需要把本对象和子对象上的Effect动画停止掉,然后把Effect的target对象置null; 如果不停止掉动画直接把 Effect置null将不能正常移除对象。
4. SWF泄露:要完全删除一个SWF要调用它的unload()方法并且把对象置null;5. 图片泄露:当Image对象使用完毕后要把source置null;(为测试);6. 声音、视频泄露: 当不需要一个音乐或视频是需要停止音乐,删除对象,引用置null;内存泄露解决方法:1. 在组件的REMOVED_FROM_STAGE事件回掉中做垃圾处理操作(移除所有对外引用(不管是VO还是组件的都需要删除),删除监听器,调用系统类的清除方法)先remove再置null, 确保被remove或者removeAll后的对象在外部的引用全部释放干净;2. 利用Flex的性能优化工具Profile来对项目进程进行监控,可知道历史创建过哪些对象,目前有哪些对象没有被删除,创建的数量,占用的内存比例和用量,创建过程等信息;二.你常用的Flex框架是什么?简述一下它的特点。
mate.特点:Flex应用是基于事件驱动的,而Mate框架使其变得更加得简单,Mate 允许用户定义是谁正在管理/处理这一事件,以及数据是否需要从服务器端返回,或者其他的什么事件需要被触发,所有的这些都使得Flex应用的开发变得更加得简单。