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個事件有什麼區別?請說下具體的使用方法

和相關的使用場合?
沒接觸過,待學習中

4.請說下你理解AS3的事件機制是什麼機制?你認爲正確的就可以說出來.
答:從應用程序到最外層的容器在到容器裏的組件或容器遍歷註冊的事件,然

後按照原路返回冒泡響應事件

5.請問addEventListener裏面有幾個參數,你能說出具體的使用方法嘛?
答:只用過前4個,參數分別爲:Event名稱,響應(回調)函數, 是否冒泡時

響應,Event級別

6.請問我想判斷一個字體是否是數字,用什麼辦法去判斷呢?
答:isNaN(parseInt(strPara) 或 strPara is Number

7.請問我想判斷一個字符或者一個對象的類型怎麼判斷呢?
答: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或者as3

26.請問新創建的一個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 = 
Apple

Orange

Pear

Watermelon

;
以下有一個字符串,我現在知道了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應用的開發變得更

加得簡單。

三.Flex是如何與flash協作的?
實現編碼與設計的好處是顯而易見的:

1.代碼易於維護與二次開發。所有AS代碼以面向對象的思想在flash外部組織

,用notepad即能打開。比起傳統的as2分散於frame之間,以及更早的分散於

影片與按紐之上,其優點好處不言而喻。

2.設計獨立於代碼之外。可以在沒有程序員的清況下,修改程序(系統) 的

外觀,亦可以新做一批theme;程序沒有變,只是改改圖片和排列位置,大小

等,就可以迅速煥然一新。譬如,在春節時,加一些春節的時令元素進去,這

將是一件很容易做的事情。

四.如何提升Flex運行效率,請從各方面進行簡述。

1、避免容器的多級嵌套,減少相對尺寸、相對定位的使用。
在使用百分比來給容器內的元件定尺寸,一旦容器中的任何一個元件的位置和

尺寸變化,都會引發容器對所有子級的重定位動作。如果嵌套的級別很深,這

個計算量會很大。

2、儘量使用輕量級的容器
Canvas是體積最小的容器,它只支持絕對定位。很多時候,都可以使用它來代

替HBOx和VBox。另外,Canvas也是我們編寫自定義容器性質組件的一個首選。

它具有容器的基本功能,利於擴展。

3、避免使用大體積的組件,比如DataGrid、AdvancedDataGrid
大個子組件的功能強大,但開銷也是非常大的。由於功能的複雜性,使得皮膚

、樣式、itemRenderer的實現都格外複雜。

4、處理數據時多用分頁的方式
在使用數據類型控件時,儘量減少數據一次的顯示量。比如TileList,它會把

數據一次性全部創建,不管是不是需要顯示,這樣很浪費資源。 ViewStack

、TabNavigator等在處理元件時,並不是一次創建,只要元件在第一次被顯示

時才創建,這樣,就避免的不必要的開銷。

5、setStyle和styleName
Flex 組件的皮膚都是可視化元件,組件在自身初始化時,會使用當前的樣式

比如styleName完成所有皮膚元件的繪製。如果我們在運行期間通過 setStyle

修改了組件的樣式,組件的尺寸、位置就會作相應調整。聯繫到第一條,如果

組件位於一個層級很深的容器中,也會有一個大的計算量。

 

 

組件內容
1.我不想在容器裏顯示滾動條怎麼辦?

2.請問Flex bulider3可以創建幾種不同的項目?

3.你瞭解RSL嘛?請說明下RSL的使用方法,以及使用RSL爲了解決什麼問題?

4.請問SWC是做什麼用的,怎麼樣自己製作一個SWC?

5.flex生成出來的文件都是很大,請問你用什麼辦法進行縮小呢?

6.請問 trace( NaN == NaN ) 結果爲true 還是false,爲什麼?

7.warning: unable to bind to property ” on class ‘Object’ (class

is not an IEventDispatcher) 在使用ItemRender時,經常會出現這種警告,請

問想去除的話怎麼辦呢?

8.現在流行MVC,但是as代碼有的時候還是大部分寫在mxml裏面,請問我想代碼

分離怎麼辦呢?

9.我想繼續UIComponent重新寫一個正方形的組件,我應該怎麼做?請說重點部

分即可.

10.常用的幾個切換數據的組件比如: TabNavigator等都有屬性

creationPolicy 你知道這種策略的使用方式是什麼嘛?以及優,缺點呢?

11.我想在application裏獲取當前運行的URL,我要怎麼獲取.

12.請說下事件裏的currentTarget 和 target的區別?

13.請列舉下你常用的幾種effects,並說明使用原因.

14.HBox,VBox和canvas有什麼區別呢?試說出其中幾點

15.請問我想在list裏選中多行信息,我要怎麼做呢?

16.Alert裏面有幾個屬性,我想設置圖片怎麼辦呢?

17.請問你是否設置過樣式呢,我想動態設置樣式怎麼辦呢?如果我想在as代碼

裏設置樣式我又要怎麼辦呢?

18.你能說一下UIComponent的生命週期嘛?以及相關的使用場合呢?

19.請問你是否發現過 flex3裏的bug呢,請列舉一些?

20.列舉出flex裏面的幾個綁定數據對象的方式

21.請問我自己定義了一個組件,我想在組件裏的屬性裏設置幾個默認值,我要

怎麼設置呢?

22.callLater()方法怎麼使用,爲什麼要使用這個方法呢?

23.請問你是否使用過module這種方法去做項目呢?他的優,缺點是什麼呢?使用

組件的方式加載的話,他的優,缺點是什麼呢?

24.目前網頁裏都有導航,請問在Flex要做導航要注意一些什麼呢?以及怎麼樣

做呢?

25.我想在一個錯誤的圖片鏈接裏,定義一下默認的圖片怎麼做呢?

26.請試寫一個自定義的驗證組件

27.請說明下tigger tiggerEvent 在驗證組件裏是什麼意思,具體怎麼使用呢?

28.ExternalInterface, LocalConnection 2者有什麼區別?

29.你是否使用過flex的測試工具呢?請說明下具體是哪種,以及使用方式,你爲

什麼使用這種工具?

30.我能把CSS編譯成swf嘛?

31.請用as3列舉下你用過的模式

32.Embed綁定圖片有什麼缺點?

33.TitleWindow的組件是可以拖動的,我不想讓他拖動我要怎麼辦呢?

34.你是否使用過profile,你覺得這個工具怎麼樣,優,缺點是什麼呢?

35.你是否做過flex 前端的性能優化,你覺得怎麼做是比較完美的?

36.你是否瞭解E4X,請說明一下優,缺點?

37.請列舉一下你知道的影響性能的幾個因素?

38.請說明一下ShareObject的使用方法?以及優,缺點?

39.請列舉一下,你認爲不錯的網站或者blog.

40.我現在給你100萬做一個flex項目,你認爲成功的要素在哪呢?

第二部分:

Junior:

1 Flex/Flash與html的優劣?

2 flex與flash的區別

3 as與mxml,js,Java的區別

4   什麼時候用bindable,它的實現原理?(Listenerand handler)

5 flex4中出現哪些新的功能?你最喜歡它哪些功能?

  Spark組件框架,States,effects and layout,FXG

6 在flex中如何快速進行調試?(trace 和debugconfiguration)

7 加載圖片有幾種方式?(Embed和動態加載)各自的使用場合?

8 使用過Flex中的哪些組件,自己寫給組件嗎?遇到過些什麼問題?

 

Senior:

1 用過哪些Flex框架?(Parsley,Cairngorm,pureMVC)簡單介紹一下你用過的框架

2flex的渲染機制,什麼時候flex進行刷新,下面這些函數在組件中起什麼樣作用? 

1).  createChildren()

2).   invalidateProperties()–> commitProperties()

3).   invalidateSize()–> measure()

4).   invalideDisplayList()–> updateDisplayList()

3 flex組件(AdvancedDataGrid/Chart)

  在AdvancedDataGrid中,怎麼處理層級數據?

  如果自己實現DataGrid/Chart,提供大概的思路?

  組件中哪一些方法經常被重載?如何與父組件交互?

 createChildren()commitProperties() measure()updateDisplayList()

4 labelFunction 在衆多組件中參數不一致,爲什麼? 

  itemRenderer 如何實現行渲染,列渲染,行列背景色渲染,

  styleFunction 可以實現行列背景色渲染嗎?

5 介紹一下flex中使用過的設計模式,比如單例模式,MVC模式(as與mxml分離)

6如何提高flex的加載速度?(延遲加載容器和Module)

第三部分:

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的方式。和{}相同,可以多綁一,可以雙向綁定。如

(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文件減肥,運行效率,內存泄露問題,前臺優化




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章