FLEX面试题

1Q:使用Flex Bulider3建立一下新的.mxml的页面时默认的背景是蓝色的,请问用什么办法能修改掉此背景颜色,以至于下次创建时背景不是为默认的蓝色的呢?请写出你认为正确的方法.
  A:这个问题之前还真没想过,查看了下。我直接是从4开始用的。3没怎么用过。
   3的答案是:修改sdk\frameworks\projects\framework\default.css里Application的backgroundColor: #0000FF;
   4的是根据Adobe Flash Builder 4 Plug-in\sdks\4.1.0\frameworks\themes\Spark中的spark.css的contentBackgroundColor: #0000FF;
----------------------------------------------------------------------------------
  2Q:使用Flex Bulider3如何跟踪程序?
  A:跟踪?喷信息,单步debug? 喷信息可以用trace或alert.show()。或者在firebug里调ExternalInterface.call( "console.log" , str);
ExternalInterface [eks'tə:nl]['intəfeis] 这里我要记下这个怎么拼,一直是直接复制粘贴。
flash.external.ExternalInterface o(︶︿︶)o 唉
或者js调alert().
----------------------------------------------------------------------------------
3Q:请问enterFrame和timerEvent这2个事件有什么区别?请说下具体的使用方法和相关的使用场合?
A:首先我纠正下enterFrame是Event的Event.EVENT_FRAME的staitc String;timerEvent是TimerEvent,2者没有可比性。enterFrame的事件一般在flash中用的比较多,它是根据帧频,就是在你的主fla中绑定主类的地方设置一个数。就是一秒播放多少次就执行多少次的意思。timerEvent类是Timer类发出的,当你new一个Timer类,你设定好sleep(假象)的时间,监听它,它就就行。
两者都有误差,当你以秒为单位处理时可以使用,毫秒时就存在误差了(在处理音频时需要纠正方法才行。)
----------------------------------------------------------------------------------
4Q:请说下你理解AS3的事件机制是什么机制?你认为正确的就可以说出来.
A:从应用程序到最外层的容器stage在到容器里的组件或容器遍历注册的事件,然后按照原路返回冒泡响应事件。分为:第一个Capture Phase(捕获阶段)第二个Target Phase(目标阶段)第三个Bubbing Phase(冒泡阶段)。
----------------------------------------------------------------------------------
5Q:请问addEventListener里面有几个参数,你能说出具体的使用方法嘛?
答:一共由5个 第一个是 类型 第二个是回调函数 第三个是是否关闭冒泡(默认是FALSE) 第四个是 监听的级别 第五个是 是否弱引用(默认FALSE)弱引用开启会被垃圾自动回收。
----------------------------------------------------------------------------------
6Q:请问我想判断一个字体是否是数字,用什么办法去判断呢?
A:is Number
----------------------------------------------------------------------------------
7Q:请问我想判断一个字符或者一个对象的类型怎么判断呢?
A:is ,如果想得到一个变量是什么类型可以使用typeof
----------------------------------------------------------------------------------
8Q:请问你了解 internal 控制符么?能说下具体使用方法和场合嘛?
A:同一个包里才能调用internal所定义的变量或对象
----------------------------------------------------------------------------------
9Q我想在某一点不去执行任何内容,也就是说我想停止执行了,你知道要怎么做嘛?
A:return;
----------------------------------------------------------------------------------
10Q:请问 undefined 和 null 是否一样,如果不一样能否说出其中的区别呢?
A:undefined未定义过的变量或对象; null没有被赋值或创建的变量或对象

null是指没有值,undefined是指没有值而且也不知道类型,所以只有Object才可能取值undefined
注意NaN虽然看起来和两者很相像,但它不管是类型还是值都是有的。
----------------------------------------------------------------------------------
11Q:创建常量知道怎么创建嘛?说下你是怎么创建的.
A:const PI:Number = 3.1415926;
----------------------------------------------------------------------------------
12Q:请问用什么方法自定义一个事件呢?说下具体的方式.
A:先用as创建一个event类, 然后
<1>可以用addEventListener直接响应
<2>也可以用元标签声明 [Event(name=事件名称,type=事件类)],然后创建对象->dispatchEvent(创建的对象)->mxml标签中使用事件名称来响应
首先要继承Event类
然后建立一个常量作为事件类型
然后重写toString和clone方法
----------------------------------------------------------------------------------
13Q:请问怎么样检测本机的内容呢,比如说,我想知道本机的操作系系,是否有视频等这些.
A:flash.system.Capabilities这个类记录了系统的一些信息
只读os 是系统类型
只读hasVideoEncoder 指定系统是否可以对视频流(如来自 Web 摄像头的视频流)进行编码,如果是,则为 true,否则为 false。
只读hasAudio 指定系统是否有音频功能。
----------------------------------------------------------------------------------
14Q请问用什么办法解决安全域的问题?如果你不知道安全域的问题的话,可以在本机中绑定一下图片,然后再放到服务器上,就会出现此问题了.
A。安全域我一般就是设置crossdomain.xml
----------------------------------------------------------------------------------
15.有三种基本数字类型: number, int, 和uint 请问有什么区别.具体说一下.
答:number数字类型包含浮点型(正0负); int 整型(正0负); uint(无符号整型)
----------------------------------------------------------------------------------
16.parseInt此方法转化为int型的方法,请问你知道此方法的第二个参数是什么意思嘛?
答:进制 2 8 16 等
----------------------------------------------------------------------------------
17.Math.round( ), Math.floor( ) 和Math.ceil( ) 三个方法都是四舍五入,请问有什么区别?
答:round四舍五入
floor向下取正
ceil向上取证
----------------------------------------------------------------------------------
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.我想创建的视图居中怎么办?
答:布局策略里面限定为居中,即horizontalAlign="center" verticalAlign="middle";或者在每个控件都以舞台的中心作为相对坐标来计算各自的xy值。
----------------------------------------------------------------------------------
22.请问知道层级的概念嘛?如果知道请问怎么样交换2个组件的层级呢?
答:层级表示的是显示对象在显示列表中的位置,从第0层开始,位于最下面。
交换组件层级可以使用id交换:
my_sprite.setChildIndex(mc, 0);
my_sprite.setChildIndex(mc, 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
----------------------------------------------------------------------------------
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:"开头的超链接,如这儿
(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.
package {
import flash.display.Sprite;

public class XmlExample extends Sprite {
public function XmlExample() {
var employees:XML =
#employees#
#employee ssn="123-123-1234"#
#name first="John" last="Doe"/#
#address#
#street>11 Main St. #city>San Francisco #state>CA #zip>98765 #/address#
#/employee#
#employee ssn="789-789-7890"#
#name first="Mary" last="Roe"/#
#address#
#street>99 Broad St. #city>Newton #state>MA #zip>01234 #/addres#
#/employee#
#/employees#

trace(employees.employee[0].address.zip); // 98765
trace(employees.employee[1].@ssn); // 789-789-7890
trace(employees.employee.name); //
//

trace(employees..zip[0]); // 98765
trace(employees..@ssn[1]); // 789-789-7890
trace(employees..name); //
//

trace(employees.employee[0].address.*); // 11 Main St.
// San Francisco
// CA
// 98765
var node:String = "zip";
trace(employees.employee[0].address[node]); // 98765
var attribute:String = "ssn";
trace(employees.employee[1].@[attribute]); // 789-789-7890
for each (var num:XML in employees..@ssn) {
trace(num); // 123-123-1234
} // 789-789-7890

var ssnToFind:String = "789-789-7890";
trace(employees.employee.(@ssn == ssnToFind).toXMLString());
//
//
//


// 99 Broad St.
// Newton
// MA
// 01234
//


//
}
}
}

----------------------------------------------------------------------------------
35.请说下目前使用flex和后台交互的几种方法,以及适用场合.
答:(1)基于AMF消息格式的RemoteObject组件,如Lcds/BlazeDs,AMFPHP等。
(2)基于SOAP消息格式的WebService,对于使用SOAP的服务器方便连接。
(3)基于纯文本或拥有良好格式的XML消息格式的HTTPService组件。
一般来说,选用高效稳定的RemoteObject中间件。
----------------------------------------------------------------------------------
36.我现在想在flex里调用JS方法,我要怎么办呢?
ExternalInterface.call("",**);
----------------------------------------------------------------------------------
37.我想用JavaScript调用ActionScript函数,我要怎么办呢?
先在as3中敌营ExternalInterface .addCallBack("sss",Function)
然后在js调flash的id.sss
----------------------------------------------------------------------------------
38.FileReference 请说下此对象的几个相关事件
主要方法
public function browse(typeFilter:Array = null):Boolean
public function download(request:URLRequest, defaultFileName:String = null):void
这一般用在上传和下载中,
Event.COMPLETE 完成触发
Event.CANCEL 取消触发
IOErrorEvent.IO_ERROR 错误触发
ProgressEvent.PROGRESS 进度触发

posted @ 2012-11-19 11:23  刀锋浪  阅读(448)  评论(0编辑  收藏  举报