您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Flex4與自定義布局有什么關(guān)系,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Flex4與自定義布局
如果您還不熟悉Flex4的***功能,那么有些內(nèi)容肯定是您想要了解的。Flex4/Spark組件架構(gòu)的新功能之一是可以定制一個容器的布局而不必改變?nèi)萜鞅旧?。您需要做的就是定義一個自定義布局。
Flex4/Spark架構(gòu)中的容器并不控制它們自己的布局。相反,每種容器具有一個布局屬性,用于確定如何在屏幕上設(shè)置子元素的布局??梢允褂靡粋€單獨(dú)的Group容器,并賦予其一個垂直布局、水平布局或平鋪布局,這取決于您將如何創(chuàng)建它。
代碼很簡單,如下所示:
<s:layout> <s:VerticalLayout/> </s:layout>
不過真正的好處在于您不必局限于框架中定義的默認(rèn)布局。您可以輕松定制BaseLayout類來實(shí)現(xiàn)自己定制的布局邏輯。下面是一個簡單的例子,顯示了如何實(shí)現(xiàn)一個在原點(diǎn)周圍順時針放置組件的布局。只要單擊左下方的按鈕就可以將更多按鈕添加到布局。
下面是主應(yīng)用程序文件的代碼??梢钥吹剑a相當(dāng)簡單。這就是一個DataGroup,有點(diǎn)像一個重復(fù)程序(repeater),它包含一組按鈕。這個容器的布局基于一個自定義布局實(shí)現(xiàn)。在creationComplete中,填充DataGroup的數(shù)據(jù)提供程序,從而在布局中創(chuàng)建按鈕實(shí)例。
可以看到,DataGroup實(shí)例的布局受CircularLayout類控制(該類如下所示)。該類只是循環(huán)遍歷datagroup對象的子對象并將它們按順時針方向放在一個圓圈內(nèi)。我查看了VerticalLayout類的源代碼,弄清了它的工作方式,并由此開始構(gòu)建自己的布局實(shí)現(xiàn)。
package { importmx.core.ILayoutElement; importspark.layouts.supportClasses.LayoutBase; publicclassCircularLayoutextendsLayoutBase { overridepublicfunctionupdateDisplayList(w:Number,h:Number):void { super.updateDisplayList(w,h); if(!target) return; varlayoutElement:ILayoutElement; varcount:uint=target.numElements; varangle:Number=360/count; varradius:Number=Math.min(target.width/2,target.height/2)-25; varw2:Number=target.width/2; varh3:Number=target.height/2; for(vari:int=0;i<count;i++) { layoutElement=target.getElementAt(i); if(!layoutElement||!layoutElement.includeInLayout) continue; varradAngle:Number=(angle*i)*(Math.PI/180); var_x:Number=Math.sin(radAngle); var_y:Number=-Math.cos(radAngle); layoutElement.setLayoutBoundsPosition(w2+(_x*radius)-25,h3+(_y*radius)-10); } } } } <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo"> <s:states> <s:Statenames:Statename="normal"/> <s:Statenames:Statename="hovered"/> </s:states> <s:layout> <s:BasicLayout/> </s:layout> <s:Buttonlabels:Buttonlabel="{data}"baseColor.hovered="#FF0000"/> </s:ItemRenderer>
這個示例中使用的項(xiàng)目渲染器實(shí)際上是最基本的。它是一個只包含一個按鈕的ItemRenderer實(shí)例,簡單明了并且很容易看到產(chǎn)生的結(jié)果。
關(guān)于“Flex4與自定義布局有什么關(guān)系”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。