Flex編程技巧問答題

1.使用Flex Bulider3創建一下新的.mxml的頁面時默認的背景是藍色的,請問用什麼辦法能修改掉此背景顏色,以致於下次建立時背景不是爲默認的藍色的呢?請寫出你認爲正確的方法。javascript

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

 

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

答:我知道的三種1.trace() 2.設置斷點 3.當不在調試模式時能夠調用as的Alert.show()或js的alert() 如:navigateToURL(new URLRequest("javascript:alert(traceMsg)"), "_self");前端

 

3.請問enterFrame和timerEvent這2個事件有什麼區別?請說下具體的使用方法和相關的使用場合?java

答:enterFrame是按幀發生,timeEvent是根據設置的Timer類參數發生。如:canvas

用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)開源組件的使用

相關文章
相關標籤/搜索