Flex問題解決大全教學文案_第1頁
Flex問題解決大全教學文案_第2頁
Flex問題解決大全教學文案_第3頁
Flex問題解決大全教學文案_第4頁
Flex問題解決大全教學文案_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。Flex問題解決大全1、flex包含一個基于組件的開發(fā)模型,你只需要按需求繼承現有的組件并擴展相關的方法就可開發(fā)你的應用。2、可視化組件包括以下主要特性:尺寸、事件、樣式、效果、皮膚。3、flex定義了兩套組件。一套為Spark,放在spark.*包下。一套為MX,放在mx.*包下。Spark是在flex4中新添加的,mx為舊版本中定義的。兩套組件的主要不同點在于樣式及皮膚的使用。另外對于容器組件,布局的方式也改變了。4、有些組件在兩套UI中都存在,例如按鈕,在這種情況下adobe建議你使用Spark中

2、的組件。有些組件是某套UI特有的。例如Spark中的3d效果。mx組件中的數據可視化組件,例如DataGrid、AdvancedDataGrid。所以你的應用會包含兩套UI中的組件。5、可視化組件的繼承層次結構:Object-EventDispatcher-DisplayObject-InteractiveObject-DisplayObjectContainer-Sprite-FlexSprite-UIComponent。flex中所有的可視化對像都繼承自UIComponent。6、UIComponent中需要注意以下屬性。doubleClickEnabled:flex默認是不支持雙擊的,如

3、果要開啟雙擊,請把該屬性設為true;height:在mxml中你可以設置值為數字,這時默認單位為pix。你也可以設置為70%這種比例。在as中,如果要設置百分比,你需要用percentHeight這個屬性。x,y:這組屬性只在layout為絕對布局時才有效。7、每一個flex組件都有對應的mxml接口和as接口。兩者之間是相等的。8、每個一可視化組件都包含以下三個生命周期事件:preInitialize:組件剛被創(chuàng)建,還沒有添加子節(jié)點,且不可見。initialize:把子節(jié)點初始化好,并尺寸也設置好,但仍然處于不可見狀態(tài)。creationComplete:組件已經被放在父容器中而且可見。你可

4、以使用上面三個事件對組件做一些初始化工作。9、flex提供了多種設置組件大小和布局的機制。默認大?。喝绻悴恢付ńM件的大小或布局,flex會自動設置一個適合的值。顯式設置大?。耗憧梢燥@式地設置組件的height/width大小?;诒壤脑O置大?。豪缭趍xml中設置height/width=70%或在as中設置percentHeight/percentWidth=70。基于約束的布局:你可通過組件中的樣式屬性:top,buttom等設置組件的布局及大小。這種設置方式只可以使用在父組件為絕對布局的情況。10、flex應用是基于事件驅動的。事件可以讓程序員知道用戶與UI的交互、組件的生命周期及外

5、觀變化。當一個組件分發(fā)事件,所以對該組件進行監(jiān)聽的監(jiān)聽器都會被通知。11、除了用選擇器設置組件的外觀外,還可以直接調用元素的setStyle(proName,value)設置外觀。12、flex4中的類選擇器需要使用命名空間。例子代碼:namespaceslibrary:/flex/spark;s|BorderContainerborderColor:red;。13、效果(effect)是組件在一段時間內的視覺或聽覺上的變化,例如退色,位移等。14、數據綁定是源屬性(source)發(fā)生變化時,目的(destination)屬性會自動產生變化。15、flex提供了三種數據綁定的方式。第一種是在m

6、xml中使用括號在目的屬性中對源屬性進行綁定。第二種是在mxml中使用標簽對源屬性與目標屬性進行綁定。第三種是在as中使用BindingUtils方法對源屬性與目標屬性進行綁定。16、數據綁定符可以直接對屬性進行引用,也可以對方法進行引用。例如:obj.text.toUperCase()17、數據綁定符和兩種方式對數據進行綁定是從編譯時就開始的。而BindingUtils即在運行時才開始綁定。18、可綁定符的意思是當對應的屬性變化時,會觸發(fā)數據綁定事件,通知綁定的目標屬性。19、當源對像分發(fā)initialize事件以及在源對像變化時都會觸發(fā)數據綁定事件。20、如果你創(chuàng)建一個對像,并想讓它可以成

7、為數據綁定的源,那屬性前面必需加上Bindable/Bindable(eventname)/Bindable(event=eventname)標簽。當你直接使用Bindable標簽時,實質上等價于Bindable(propertyChange)。當屬性發(fā)生改變時,flex會分發(fā)propertyChange事件給綁定于此屬性的綁定目標對像。21、通過標簽或BindingUtils可以把多個源屬性綁定到一個目標對象。綁定后,任意一個源發(fā)生改變時,目標對像都會被更新。22、雙向綁定:數據的任意一方發(fā)生變化時,另一方都會被通知并改變。數據綁定表達式:。數據綁定標簽:。另外樣式、效果、RPC中的requ

8、est和arguments對像都不支持雙向綁定。23、使用方法作為數據綁定的源。當方法的參數為Bindable時,參數的改變會觸發(fā)數據綁定事件,讓目標屬性的值更新為方法的結果。如果方法中沒有Bindable參數,即目標屬性只會在開始時被更新一次。24、如果你想綁定一個方法作為源數據,但該方法又沒有可綁定的參數時可以使用Bindable(event=evenname)標簽,當該對像分發(fā)dispatchEvent(newEvent(eventname)時,綁定到方法的目標屬性就會被更新。25、在類定義的地方便用Bindable標簽等價于在該類中的所有public屬性以及有對應的set/get方法的

9、屬性中加上Bindable標簽。27、在定義一個屬性的地方使用Bindable標簽的作用是當該屬性被替換成另一個值時,目標屬性會接收到通知事件,并更新值。這里要注意的是只有被替換時才更新,如果只是該屬性中的某個屬性被改變的情況,目標對像是不會被更新的。28、在數組(ArrayCollection)中使用Bindable標簽時,無論是數組被替換還是數組中的元素改動,都會觸發(fā)更新事件。29、如果只綁定數組中的某個元素時,應使用getItemAt()。這樣該元素被替換時會觸發(fā)更新事件去更新目標對像。但如果使用num的形式進行綁定時,不會觸發(fā)更新事件。30、在數據綁定符()和數據綁定標簽()中,你可以

10、使用as表達式。例如Number(obj.text)*6/7和ex4表達式。但不能在BindingUtils.bingProperty()/bindSetter()中使用。31、as中的方法綁定接口。BindingUtils.bindSetter(funToCall,sourceObj,sourceOperty):ChangeWatcher。32、你可以使用ChangeWatcher.watch(sourceobj,perty,listener);方法添加一個監(jiān)聽器,當綁定時件觸發(fā)時,listener會被調用。33、如果源屬性被替換,但被替換的對像與原對像是同一個對像,這種情況下更新不會被觸發(fā)

11、。如果你想自已控制事件觸發(fā),你可以在Bindable(eventname)中指定事件名,然后在想更新時通過dispatchEvent(newEvent(eventname)的方式觸發(fā)。34、數據綁定源中的整個屬性鏈(chain)中的每一個節(jié)點都需要Bindable,如果只有最未端屬性是Bindable,那鏈中的其它層屬性被更改時,不會觸發(fā)更新事件。35、如果你把對像綁定到dataProvider的話,當你需要改變其中一個對像的一個屬性時,你需要以下代碼obj.dataprovider.editField(index,propername,value);這樣更新對像才會同時更新到顯示組件中。36

12、、如果你把Array綁定到顯示組件中時,該組件只在初始化時更新一次值。初始化后,當Array中的項改變時,不會觸發(fā)更新。37、容器提供了一個層次結構讓你去布局組件。38、flex最頂層容器叫application。39、flex容器有兩種,一種是布局容器(layoutcontainer),另一種為導航容器(navigatorcontainer)。布局容器用于布局子組件/子容器的大小和位置。導航容器用于多個容器的導航。導航容器只能夠用mx容器及spark的NavigatorContent容器。40、mx組件容器只能存放繼承自UIComponent對像的組件,而spark容器可以放下實現IVisu

13、alElement接口的組件。IVisualElement在UIComponent對像的繼承層次中被實現。41、mx容器與spark容器的主要區(qū)別在于mx組件的布局是固定的,而spark組件的布局是可以被替換的。42、創(chuàng)建策略(CreationPolicy)。創(chuàng)建策略指定了容器對子組件的初始化進程。創(chuàng)建策略有三個選項:ContainerCreationPolicy.AUTO/NONE/ALL。all:開始時初始化所有容器。NONE:不初始化所有子容器。AUTO:子組件在被需要時才創(chuàng)建,例如如果設置了AUTO選項,導航容器中除首頁外,其它頁的子組件在點擊后才會被創(chuàng)建。43、如果把一個容器的lay

14、out屬性設為null,即該容器會采用它父容器的布局。44、初始化事件順序:preinitialize(自外向內),contentCreationComplete(容器特有,自內向外),initialize(自內向外),cteationComplete(自內向外)。45、容器中有一個enabled屬性,如果該屬性設為false,即所有節(jié)組件都處于enabled=false狀態(tài)。46、容器中的defaultButton屬性。設置該屬性后,當用戶在該容器上按回車鍵時,該按鈕被觸發(fā)。47、spark中的四種布局:BasicLayout(絕對定位或約束布局),HorizontalLayout(單行水平

15、布局),VerticalLayout(單身垂直布局),TileLayout(多行表格布局)。48、spark容器中如果放置一個大于該容器的組件,默認情況下該組件會越過容器顯視。49、如果要把組件的顯視限制在容器內,可以使用viewport和scrollbar。50、viewport定義了兩個區(qū)域,一個為邏輯區(qū)域(logicalcontent),另一個為可視窗口(visiblewindow)。邏輯區(qū)域包括所有的子組件。顯視區(qū)域是用戶能看見的,是邏輯區(qū)域的一個子集。51、veiwport的contentHeight/contentWidth是邏輯區(qū)域的大小,它的大小由子組件決定。52、height

16、/width是可視窗口的大小。53、verticalScrollPosition/horizontalScrollPosition是可視化窗口相對于邏輯窗口的坐標。坐標為負時,可視化窗口向左上移。為正時向右下移。54、viewport中的clipAndEnableScrolling屬性默認為false,即如果子組件的大小大于容器,那子組件將越過容器邊界顯視。如果設置為true,即超出容器部份將不顯視。55、可以通過三種方法為容器增加滾動功能:1,增加HScrollBar/VscrollBar。2,把容器放到Scroller中。3,在容器使用的皮膚中加入Scroller。56、在H/VScrol

17、lerBar中設置viewport中指定該bar的目標容器。當滑動滾動條時,滾動條會改變容器的verticalScrollPosition/HorizontalScrollPosition的值。57、放在scroller中的容器的clipAndEnableScrolling的值為true。58、只有實現了viewport接口的容器都才能使用scroller。如果容器沒實現viewport,例如BorderContainer、SkinnableContainer,即可以在此容器內放置scroller然后再放實現了viewport的容器。也可以先在scroller內先放置group,然后再放置沒實

18、現viewport接口的容器。59、mx組件容器默認就支持滾動,當clipContent為true而且子組件超出容器邊界時,滾動條自動出現。如果需要滾動條一直出現,可以設置horizontalScrollPolicy和verticalScrollPolicy屬性為true。60、顯視列表中對節(jié)點的操作方法,在Spark與mx組件中是不同的。主要的不同點是spark組件的方法名中大部份含有Element,而mx組件中則以Child代替。61、在顯視列表中調用numElements/numChildren方法得到的是直接子節(jié)點的數目。62、flex/flash有三個坐標系統:全局(global),

19、本地(local),內容(content)。63、全局坐標是以舞臺(stage)的左上角為坐標原點的坐標系統。在MouseEvent中有stageX和stageY屬性就是全局坐標系統中的坐標軸。64、本地坐標是相對于組件左上角的坐標。所有組件都有的mouseX與mouseY屬性指的是本地坐標系統的值。MouseEvent中的localX與localY也是本地坐標系統的值。而拖放操作中的xOffset與yOffset也是。65、內容坐標是是相對于組件內容的左上角。與全局和本地坐標不同的是內容坐標包括組件的內容區(qū)域。組件中的contentMouseX/contentMouseY屬性是內容坐標的值。

20、66、在鼠標事件中的內容坐標與本地坐標是針對事件的目標對像,而目標對像并不是一定是你操作的對像。所以一般情況下你需要把本地坐標轉化為全局坐標然后再把全局坐標轉化為內容坐桿。67、所有的可視化組件中有關坐標的屬性。contentMouseX/contentMouseY:鼠標在組件中的內容坐標。68、所有的可視化組件中有關坐標的方法:contentToGlobal/contentToLocal,globalToContent/globalToLocal,locatToContent/localToGlobal。69、布局(layout)分兩部份,一部份為尺寸(sizing)另一部份是定位(posi

21、tioning)。70、布局管理器(layoutmanager)通過三個階段去布局你的組件。保證階段(Commitmentpass),測量階段(MeasurementPass),布局階段(LayoutPass)。在保證階段,管理器先確認你設置的組件的一些與布局有關的值。此時管理器會調用各組件的commitProperties()。在測量階段,管理器為各組件設置或計算一些尺寸相關的屬性的默認值。此階段管理器會調用各組件的measure()方法。在布局階段,管理器會移動和設置組件以及相關的畫圖方法。此時管理器會調用各組件的updateDisplayList()。71、flex在程序初始化時(ini

22、tializes)時或在一些與布局相關的屬性改變時會自動進行布局。72、在某些時候你需要手動調用組件的validateNow()方法強制進行重新布局。但此方法是計算集中型的計算,所以要確寶在需要時才調用。73、布局中常用的屬性。x/y:相對于父容器的左上角坐標。在絕對布局中有效。height/width:調用像素值或百分比。top,bottom,left,right:該組件相對于父容器的上下左右距離。在約束布局/流布局中常常用到。這幾個屬性只在絕對布局中有效。74、flex布局是不考慮組件是否處于可視狀態(tài)。也就是說不論組件是否可視,它都會在區(qū)域中占空間。但你可以通過includeInLayou

23、t設置組件是否參與布局。要注意的是includeInLayout只影響組件是否處于容器的布局中而不影響組件是否處于可視狀態(tài)。75、布局中,adobe建議采用百份比的方式設置組件和容器的尺寸。76、在自動布局容器中,x/y屬性的設置是不起作用的。77、Spacer是一個參與布局但不可見的控件。在一些規(guī)則布局的容器中Spacer可以起到占位的作用。另外如果把spacer的寬設為100%可以起到把左邊元素各左布局,把右邊的元素向右布局的作用。78、雖然在自動布局容器中,設置組件的x和y不會起作用。但你可以通過效果(effects)暫時改變組件的位置和大小。典型,例如當用戶鼠標移動組件中,組件大小變化

24、原來的兩位并移動到容器的最前面。79、在自動布局容器中,如果你把autoLayout屬性設置為false,即容器不會自動布局。但此屬性在mx容器中有一些情況會失效。80、組件的visible控制是否可見,而includeInLayout控件組件是否參與布局。81、基于約束布局常用的屬性top/bottom/left/right這四個屬性分別代碼該組件相對于父容器的上下左右的距離。baseline代表組件中文字(標題)的底線與容器頂的距離。verticalCenter/HorizontalCenter是指組件中心與容器中心的距離。這些屬性常與一些比例的尺寸使用,做到流性布局的效果。這些屬性中有一

25、些是有沖突的,例如left/right與horizontalCenter。82、Application中有兩個獨特的事件:applicationComplete和error。applicationComplete在所有初始化工作完成后被調用。error即在httpservice調用失敗后被觸發(fā)。83、你可以在application標簽中增加一個viewSourceURL屬性,并指向一個文件。在運行過程中,在應用的任何一個空白地方右擊都會出現一個查看源碼的菜單。84、在application中還有一些屬性可以設置。frameRate:幀率,幀/秒。默認值為24。pageTitle:作用和html

26、中的title一樣。preloader:指向一個自定義進度條的swc或一個類。scriptRecursionLimit:定義as調用棧的深度,默認為100。scriptTimeLimit:在fp強制停止操作前,監(jiān)聽器能操作的時間。默認值也是最大值為60秒。usePreloader:是否使用默認的進度條。要使用進度條,app的寬度要大于160px。另外要注意的是上面的屬性只能在mxml中被設置。85、flex中有兩個進度條。一個為DownloadProgressBar(MX),另一個為SparkDownloadProgressBar(Spark)。你可以通過擴展以上類去實現自定義的進度條,也可以

27、通過繼承Sprite,并實現IPreloaderDisplay接口。另外需要注意一個問題,進度條應盡量小地引用類庫中的類,這樣可以減小進度條的大小。86、為了改善性能和減小程序的大小,有一部份spark容器是不支持皮膚的。一般情況下,你使用Group和DataGroup去管理布局。使用SkinnableContainer/SkinnableDataContainer去管理布局及自定義皮膚。87、關于VerticalLayout/HorizontalLayout中的verticalAlign/HorizontalALign屬性。除了常規(guī)的top/bottom等對齊方式外,還有justify:設置

28、子組件的高/寬和容器的高/寬一樣。conentJustify:把全部子組件的高度設為各子組件中的最高組件的高度,或容器內容高度。88、VerticalLayout.variableRowHeight:設置每一行的高度是否由各子組件確定。HorizontalColumnWidth:設置每一行的寬度是否由子組件確定。兩者的默認值為ture。如果設置為false,則每一行的寬度由rowHeight決定。如果rowHeight沒決定,則由VerticalLayout.typicalLayoutElement決定。如是要各元素都很小,則寬度由第一個元素的高度決定。89、控制欄(Controlbar)的好

29、處是當容器出現滾動時,控制欄的絕對位置始終不變。默認情況下,在Panel中的控制欄在panel的底部。如果需要改變控制欄的位置可以修改默認的PanelSkin。90、TitleWindow是Panel的一個子類,只要用于彈出窗的使用。TitleWindow被設計為可拖放,右上角有默認的關閉按鈕等。91、可以使用PopUpManager.createPopUp(parent:DisplayObject,class:Class,modal:Boolean=false):IFlexDisplayObject。彈出窗口并不會阻止主窗口腳本的執(zhí)行。使用removePopUp()方法移除彈出窗口。使用Ti

30、tleWindow的常規(guī)流程為新建一個繼承自TitleWindow的自定義組件。然后在上面定義一些事件處理。移除方法一般為PopUpManager.removePopUp(this)。的itemRenderer-item(如果實現了IVisualElement或DisplayObject本身。如果上面的都沒有或不符合,那會報錯。104、可以用一個獨立的文件自定義itemRender也可以直接在數據容器內實現itemRender。105、List類型的控件,如果dataPrivider的數據是簡單類型,如String/Number時,List會直接顯視該對像。如果是復雜類型,你需要指定label

31、Field/labelFunction或重寫itemToLabel()方法。106、list類組件的事件。caretChange:焦點從一個選項到另一個選項。change:選擇項由手動觸發(fā)變化。changing:選擇項改變前發(fā)出的事件,此事件發(fā)生時可調用preventDefault()阻止選擇項的變化。valueComit:編程方式觸發(fā)選擇項變化。以上的事件都是spark.events.IndexChangeEvent的子類。107、List系統組件中支持布局的設置。這樣使原來只支持垂直布局的List系列組件可以變?yōu)樗交蚍礁癫季帧?08、List系列組件中的一些屬性。requireSelec

32、tion:如果為true,即List默認會把第一個選項設為被選項。如果為false,第一個選項為空。默認為false。selectedIndex:當前被選擇的項的順序,從零開始。如果requireSelecttion為false,可以把selectedIndex設為-1,表示不選中。selectedItem:當前被選中的項。109、caretitem意思是當前聚焦項。它可能與selectedItem為同一項,也可能不是。110、List系列組件是SkinnableDataContainer的子類。SkinnableDataContainer沒有默認的itemRenderer,但List系列組件

33、有。下面是List系列組件所對應的itemRenderer。ButtonBar:ButtonBarButton;ComboBox:DefaultItemRenderer;DropDownList:DefaultItemRenderer;List:DefaultItemRenderer;TabBar:ButtonBarButton。111、在List組件中,你可以把allowMultipleSelection設為true,這樣用戶按著ctrl鍵可以選擇多個項。112、List組件中的selectedIndices/selectedItems為被選中的序號和項,它們均為Vector對像。113、B

34、uttonBar和TabBar的作用類似于單選按鈕,被點擊時會發(fā)出itemClick事件。114、ButtonBar/TabBar可以把一個數組付值給dataprivider。這樣就是一組簡單的按鈕,也可以把一個mx的ViewStack付給dataPrivider。這樣ButtonBar/TabBar就會直接控制這組ViewStack。115、DropDownList和ComboBox的區(qū)別:ComboBox是DropDownList的子類。DropDownList就是一個純單選的。而ComboBox除了選擇外還可以手填。DropDownList中的prompt屬性是沒被選中時顯視的文件。Dr

35、opDownList的主要事件有:close/open。116、在ComboBox中,如果你寫入的值與集合中的不匹配,在change事件中,那selectedIndex的值為-3,對應的變量為:ComboBox.CUSTOM_SELECTED_ITEM。然后會調用ComboBox.labelToItemFunction方法把這個值轉化為對像。所以如果你的集合為非簡單元素,那你需要重寫labelToItemFunction方法。117、在一個導航容器中可以使用WideRight效果在creationCompleteEffect中。然后在各子容器中的showEffec中使用WideUp,hideE

36、ffect中使用WideDown。這樣的效果比較生動。118、DateChooser可以通過selectableRange設定可選日期范圍,disabledRanges設置不可選日期范圍,disableDays設置不可選的天。另外可以通過dayNames屬性設置顯視星期的文字。通過formatString可以設置日期的格式,例如:MM/DD/YYYY。另外可以通過parseFunction方法或inputFormat把輸入的文字轉化為日期對像。119、運行時加載圖片支持以下格式:GIF/JPEG/PNG/SWF。在編譯時加載支持GIF/JPEG/PNG/SVG/SWF。也就是說SVG文件只支持

37、編譯時加載。另外SVG文件會受一些限制,例如不支持濾境、腳本等。200、image控件中,如果想運行時加載圖片,可以在source里指定路徑,例如:source=url。如果想在編譯時加載圖片,可以使用Embed,代碼如下:source=Embed(source=assets/logo.jpg)。對于同一張圖片,無論你引入多小次,圖片也只會被加載一次。201、如果不設置width/height,image默認下會以圖片的大小來顯視。在設置width/height的情況下,根據scaleContent的值來決定是否放大或縮小圖像到width/height的大小,另外根據maintainAspec

38、tRatio來決定是否改變橫寬比例。202、在一幅圖片中的rollOverEffect/rollOutEffect使用Reside效果會起到移到放大,離開縮小的效果。203、PopUpAnchor是一個彈出控件。它的作用是把它里面的控件顯視在應用的最前端而它本身沒有任何外觀。一般在以下幾種情景中會用到:一、在頁面的某個地方顯視操作回饋信息。二、類似搜索引擎中的相關提示框。雙擊某控件時,彈出的編輯小窗口。204、PopUpAnchor的displayPopUp控制它是否可見。PopUpAnchor里面組件的高寬先由popUpWidthMatchesAnchorWidth屬性決定,然后是里面組件的

39、寬度。另外可以通過popUpPosition設置組件彈出時處于PopUpAnchor的位置。如果PopUpAnchor與Effect一起使用,效果會更好。205、進度條(ProgressBar)有兩種,一種是顯視具體進度的(Determinate),另一種是不顯視具體進度的(Indeterminate)。206、ProgressBar有三種模式event(默認),polled,manual。event模式會通過source屬性中對應對像的progress/complete轉變狀態(tài)。polled模式會通過bytesLoaded/bytesTotal轉變狀態(tài)。manual模式會通過手動設置maxi

40、num/mininum轉變狀態(tài)。207、ProgressBar有一個label屬性,默認值為LOADINGxx%。這個屬性可以手動設置,其中有四個占位符%1:已讀字節(jié)數,%2:總字節(jié)數,%3:已完成的百份比,%:%符串。208、單選按鈕(RadioButton),可以通過設置groupName屬性把相同組的單選按鈕歸為一組。另外也可以定義一個,然后在單選按鈕中設置group指定。后者的好處在于可以把相關事件設置統一設在group中。另外,RadioButtonGroup如果在mxml中定義,那要定義在中。209、NumericStepper是一個數字控件,Spinner是NumericStep

41、per的父類,可以用click事件聯合Spinner配合其它控件使用。210、VideoDisplay是播放多媒體的控件,它沒有邊框及相關按鈕??刂瞥叽绲膶傩杂校簃aintainAspectRatio/height/width。按制播放的方法有:close/load/pause/play/stop。在VideoDisplay中可放入cuePoints(name/time)元素,同時在VideoDisplay中注冊cuePoint事件,每當影片播放到指定點時,將觸發(fā)cuePoint事件。如果是播放影片,可以在source屬性在設置路徑,如果是攝像頭,可以調用attachCamera(cam)方法

42、。211、VideoPlay是擁用默認按鈕的視頻播放器。212、flex的文件控件有五個Label、RichText、RichEditableText、TextArea、TextInput。其中前四個為多行,最后一個為單行。前兩個為只讀,后三個為可編輯。213、MX文字控件的格式主要通過style和htmlText控制,而spark的文件控件格式主要通過FTE(FlashTextEngine)和TLF(TextLayoutFramework)。214、用于顯視文字的主要控件有三個:Label,RichText,RichEditableText。三者中,左邊最輕量級同時功能也最少,右邊的相反。2

43、15、在支持tlf的控件中,可以直接在控件的textFlow節(jié)點中放一下TextFlow節(jié)點。TextFlow節(jié)點下可以放置類html的標簽(標簽的命外空間為s:)。另外你也可以直接設置控件的text屬性,這樣控件會忽略一些等標簽。如果你使用content屬性,TLF會解悉并轉化為TextFlow對像。另外你也可以使用html標簽文本放在一個xml對像中,然后使用TextFlowUtil.importFromXML(xml:XML)或TextConverter.importToFlow(str:String,type:String)轉化為TextFlow對像。216、在mxml中相關的TLF元

44、素如果包含一些特殊字符例如等,你可以使用相關的轉義字符代替,否則,你需要在相關標簽中使用,在as中需要使用轉義符或轉義。217、當你需要在一個容器中放置多個相同類型的組件時,可以使用Repeater。用法是在一個容器內放置一個Repeater,然后在Repeater內放置一個組件,例如。Repeater需要設置一個dataprivider。而里面的組件可以通過repeater的ID.currentItem來引用當前組件代表的dataPrivider中的當前對像。HYPERLINK/blog/632771chapter2gettingstarted1、自定義組件命名空間格式:xmlns:Tag=

45、包名。例如:xmlns:MyComps:com.humanmonth.*。調用格式:。例如:。2、swc是flex組件的歸檔文件。3、數據綁定。一、在mxml中,組件用引用其它數據。當被引用數據被更改時,組件的值也會這被更新。4、flex的遠程方法調用(Remote-procedure-callrpc)用于flex與服務端交換數據(發(fā)送/接收)。flex有多種RPC服務,包括soap,amf(java),http。MXML包含以下幾種類型的RPC組件:soap、httpservice、remoteobject(amfprotocol)。5、在mxml文件中,在標簽內定義一些非可視化組件。6、數

46、據模型(datamodel)。數據模型用于存儲數據??梢允褂脴撕?或as類。7、用定義數據模型的方法類似于直接寫xml。例如:tt/fx:Model。8、數據驗證??梢栽趍xml的標簽中聲明驗證器,格式:9、使用樣式表(css)。如果在mxml中使用標簽,即標簽必需要mxml文檔根元素的直接子元素。10、常用的css選擇器有class選擇器和type選擇器。使用type選擇器時需要使用命名空間,語法如下:namespaceslibrary:/flex/spark;s|Button。11、mx及spark架構中的一個主要區(qū)別是Spark組件依賴皮膚去定義布局及外觀。而mx組件依賴樣式及皮膚。用m

47、x組件時,你更多地去用樣式而用Spark時,你更多地是用皮膚是處理布局及外觀。12、使用效果(effect)。使用效果的步驟是先在中定義一個效果,并在target中指明效果應用到的組件。然后在組件的相關事件中調用效果:effectId.play()。13、用mxml自定義組件。步驟:找一個和自定義組件相近的類,然后在里面添加或修改一些方法。調用方法與actionscript的自定義組件方法一樣。14、在mxml中引用as中的靜態(tài)變量時,使用fullpackage.class.Name型式。15、設置默認屬性(settingthedefaultproperty)。很多flex組件定義一個單獨的默

48、認屬性。默認屬性是一種速記機制,讓用戶不用輸入屬性名的情況下設置值。例如與是相等的。而里面的dataPrivider是默認屬性。另外要注意,并不是所有的組件都有默認屬性。16、在mxml中使用轉義字符。若在mxml中使用字符中有數據綁定或轉義符。即用正斜線轉義。例如:,。17、換行符。你可以使用n或來代表換行。18、在定義一些變量前加上Bindable標記表示當該變量改變時,引用該變量的對像會被通知/自定修改。19、引入樣式或腳本的語法:fx:Stylesource=url,fx:Scriptsource=url。20、在mxml中設置正則表達式屬性:/regex/flags。21、用法上,a

49、s與mxml的關系與js和html相似。而編譯的角度看,as與mxml的關系和servlet與jsp相似。22、無論是還是都必需是mxml文件根節(jié)點的子節(jié)點。22、使用,請在里面加上。23、MXML中,每個元素都有一個ID屬性。你可以直接通過ID引用該元素。如果元素沒有設置ID,你可以通過元素的父元素的getElementAt()、getChildAt()方法獲取元素。最后,你還可以通過方括號名稱的方式來獲取元素。24、this是對當前文檔、對像、閉包的引用。25、在as中創(chuàng)建可視元素的步驟是:先創(chuàng)建元素,然后加入到容器,最后設置元素的屬性。創(chuàng)建元素后,如果不加入到容器中,對像不會被顯視。加入

50、容器的語法是MX架構:addChild()/addChildAt(),Spark架構:addElement()/addElementAt()。26、默認情況下,元素被加入到容器的最后一個元素后面。如果你要指定順序,即需要用addElementAt()或調用addElement()后調用setItemIndex()。前者效率會高一點。27、刪除元素。在Spark中,可以用removeELement(),removeElementAt(),removeAllElements()方法刪除元素。如果要是MX架構,即用Child替換上面的Element。28、當調用容器的remove相關函數后,元素就會

51、從顯視列表中去除。然而這并不代表對像會被GC刪除。緊當被刪除元素在外面沒有被引用時。flashGC才會在適當的時候刪除對像。適時刪除無用元素會大大改善性能。29、只有實現了IVisualElement接口的對像才能加入到顯視列表的容器中。如果對像沒有實現IVisualElement接口而想加入到顯視列表時,可以把對像先放到UIComponent后再加入到顯視列表。例如:newUIComponent().addChild(newSprite();30、引用。FlexGlobals.topLevelApplication是對根application的引用。parentDocument是在文檔鏈中對

52、當前文檔的上一層文檔的引用。parentApplication是在應用鏈中對當前應用的上一層應用的引用。當被載入的應用與主應用不在同一應用域(ApplicationDomain)或安全域(SecurityDomain)時,上述引用不會生效。31、在mxml中,元素的事件屬性代碼在mxml編譯后會變成一個方法。所以在元素事件屬性中的代碼的this是對文檔的引用而不是那個元素。32、在mxml中引用as代碼有兩種方法,一種是。另一種是include指令:includefilename;格式:includepac/filename.as。source支持相對或絕對路徑。而include指令緊支持相對

53、路徑。include指令可放在if語句中(語句塊中要求只有include指令)。33、as的內省(introspection)機制有兩種。它們常在調試過程中使用。一種為forin循環(huán)。另一種為as的api。34、forin循環(huán)會把動態(tài)加入的屬性及方法打印出來。然后大部份的as對像并不是動態(tài)對像,所以的forin循環(huán)中,絕大部份對像不會顯視屬性及方法。用forin循環(huán)打印動態(tài)屬性及方法與用mx.utils.ObjectUtil.toString()方法的效果一樣。35、內省api。flash.utils.desctibeType()。它們打印出public屬性及方法而不會打印私有的。返回的結果為

54、一個xml。36、事件可以讓程序員知道事情發(fā)生。鼠標、鍵盤、網絡請求、組件生命周期等等都會觸發(fā)事件。37、flash顯視列表的根元素為Stage,往下為:SystemManager-Application-其它顯視組件。這個列表我們稱為顯視列表(displaylist)。38、顯視列表的事件模型:捕獲-目標-冒泡。即發(fā)生事件后,事件會延著顯視列表樹從頂層到目標然后再冒到頂層。39、事件被觸發(fā)時,fp(flashplayer)會創(chuàng)建一個事件對像,然后這個事件對像將在事件的三個階段中傳遞。在傳遞過程中,事件對像的某些屬性會被改變。你可能通過這些屬性知道事件的所在的階段。40、flash.event

55、s.Event為事件的基類。他的子類分布在spark.events.*,mx.events.*,flash.events.*中。另外還有一些特殊作用的事件類分布在另外一些包中。例如mx.messaging.events41、顯視列表中的任何對像都繼承自DisplayObject,而DisplayObject繼承自EventDispatcher。EventDispatcher為顯視列表中的所有類提供了事件模型的功能。42、顯視列表中的任何對像都可以通過繼承自EventDispatcher的addEventListener來監(jiān)聽事件。只要事件流通過該對像,該對像的監(jiān)聽器都會被觸發(fā)。43、Event

56、Dispatcher從名稱上說,主要功能為分發(fā)事件。但在使用過程中,更多是用于添加與移動監(jiān)聽事件。44、當你需要事件模型中的功能,但又不能繼承EventDispatcher時,可以實現IEventDispatcher接口。45、除了由fp發(fā)送事件對像外,有些時候你可能需要自已發(fā)送事件。這時你可能通過dispatchEvent方法發(fā)送自定義事件到事件流中。46、event對像中的target為觸發(fā)事件的對像。currentTarget為正在處理事件的對像。47、在mxml的元素中的事件屬性直接添加事件時,如果使用click=functionname()時,event對像不會被傳入到方法中。如果要

57、傳入event對像,需要click=functionname(event);48、addEventListener中的use_capture參數為true時表示監(jiān)聽器在捕獲階段被調用,如果為false表示在冒泡階段被調用。如果不指定,那默認值會根據事件類型的不同而不同。如果你需要在事件的兩階段都解發(fā)事件,那你需要調用兩次addEventListener。use_capture參數一次為true,另一次為false。49、addEventListener中的priority。如果不設置,priority默認值為0。這種情況下,先調用addEventListener的監(jiān)聽器會先被調用。如果設置了p

58、riority,即priority的值越高,越早被調用。50、addEventListerer中的weakRef。默認為false。如果此值為false,即此監(jiān)聽器不會被GC回收。如果為true,此監(jiān)聽器會被GC回收。51、方法閉包在每次被調用時都會被創(chuàng)建。閉包的作用域在定義它的地方而不在調用它的地方。例如,閉包內引用外面的一個變量y,在調用它的方法外面也有一個變量y。即運行時,閉包引用的是定義的類中的y。52、在addEventListener中使用閉包時,參數中的userWeepRef如果設為true,在gc運行時可能會把閉包回收。這樣會出現不可預期的錯誤。53、類級別的定義不會被GC回收

59、,閉包除外。54、使用addEventListener設置的監(jiān)聽器不再被使用時,應該用removeEventListener移除。而在mxml中直接給onclick付值的方式增加的監(jiān)聽器不能被移除。55、為一個對像的同一種類形事件添加多個觸發(fā)器的方法:在mxml的事件屬情中有分號隔開多個監(jiān)聽器。例如:listener1();listener2()?;蛘呃胊ddEventListener多次:obj1.addEventListener(click,m1);obj1.addEventListener(click,m2);56、在監(jiān)聽器中實現多個參數。由于addEventListener參數中的f

60、unction是一個方法,且參數固定為event。如果要實現監(jiān)聽器多參數,方法有三個。一、閉包。因為閉包中變量的作用域是定義它的地方。例如:obj.addEventListener(click,function(event)fun(p1,p2)。二、在mxml的標簽屬情中設置監(jiān)聽器,因為在mxml中設置監(jiān)聽器時,參數是隨意的。例如click=fun(event,p1,p2)。三、把參數放在currentTarget對應的對像中。在實際使用過程中,第三種方法最簡單。57、手動分發(fā)事件。由于UIComponent-DisplayObject-EventDispatcher。所以顯視列表中的所有對像

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論