自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入剖析Flex4與自定義布局關(guān)系

開發(fā) 后端
本文向大家介紹一下Flex4與自定義布局的概念,F(xiàn)lex4/Spark架構(gòu)中的容器并不控制它們自己的布局。相反,每種容器具有一個布局屬性,用于確定如何在屏幕上設(shè)置子元素的布局。

在學(xué)習(xí)Flex4的過程中,你對自定義布局的概念是否熟悉,這里和大家分享一下Flex4與自定義布局的關(guān)系,F(xiàn)lex4/Spark組件架構(gòu)的新功能之一是可以定制一個容器的布局而不必改變?nèi)萜鞅旧?。您需要做的就是定義一個自定義布局。

Flex4與自定義布局

如果您還不熟悉Flex4的***功能,那么有些內(nèi)容肯定是您想要了解的。Flex4/Spark組件架構(gòu)的新功能之一是可以定制一個容器的布局而不必改變?nèi)萜鞅旧?。您需要做的就是定義一個自定義布局。

Flex4/Spark架構(gòu)中的容器并不控制它們自己的布局。相反,每種容器具有一個布局屬性,用于確定如何在屏幕上設(shè)置子元素的布局。可以使用一個單獨的Group容器,并賦予其一個垂直布局、水平布局或平鋪布局,這取決于您將如何創(chuàng)建它。
代碼很簡單,如下所示:
 

  1. <s:layout> 
  2. <s:VerticalLayout/> 
  3. </s:layout> 

不過真正的好處在于您不必局限于框架中定義的默認(rèn)布局。您可以輕松定制BaseLayout類來實現(xiàn)自己定制的布局邏輯。下面是一個簡單的例子,顯示了如何實現(xiàn)一個在原點周圍順時針放置組件的布局。只要單擊左下方的按鈕就可以將更多按鈕添加到布局。

下面是主應(yīng)用程序文件的代碼??梢钥吹?,代碼相當(dāng)簡單。這就是一個DataGroup,有點像一個重復(fù)程序(repeater),它包含一組按鈕。這個容器的布局基于一個自定義布局實現(xiàn)。在creationComplete中,填充DataGroup的數(shù)據(jù)提供程序,從而在布局中創(chuàng)建按鈕實例。

可以看到,DataGroup實例的布局受CircularLayout類控制(該類如下所示)。該類只是循環(huán)遍歷datagroup對象的子對象并將它們按順時針方向放在一個圓圈內(nèi)。我查看了VerticalLayout類的源代碼,弄清了它的工作方式,并由此開始構(gòu)建自己的布局實現(xiàn)。
 

  1. package  
  2. {  
  3. importmx.core.ILayoutElement;  
  4.  
  5. importspark.layouts.supportClasses.LayoutBase;  
  6.  
  7. publicclassCircularLayoutextendsLayoutBase  
  8. {  
  9. overridepublicfunctionupdateDisplayList(w:Number,h:Number):void  
  10. {  
  11. super.updateDisplayList(w,h);  
  12.  
  13. if(!target)  
  14. return;  
  15.  
  16. varlayoutElement:ILayoutElement;  
  17. varcount:uint=target.numElements;  
  18.  
  19. varangle:Number=360/count;  
  20. varradius:Number=Math.min(target.width/2,target.height/2)-25;  
  21.  
  22. varw2:Number=target.width/2;  
  23. varh2:Number=target.height/2;  
  24.  
  25. for(vari:int=0;i<count;i++)  
  26. {  
  27. layoutElement=target.getElementAt(i);  
  28.  
  29. if(!layoutElement||!layoutElement.includeInLayout)  
  30. continue;  
  31.  
  32. varradAngle:Number=(angle*i)*(Math.PI/180);  
  33.  
  34. var_x:Number=Math.sin(radAngle);  
  35. var_y:Number=-Math.cos(radAngle);  
  36.  
  37. layoutElement.setLayoutBoundsPosition(w2+(_x*radius)-25,h2+(_y*radius)-10);  
  38. }  
  39. }  
  40. }  
  41. }  
  42.  
  43. <s:ItemRenderer 
  44. xmlns:fx="http://ns.adobe.com/mxml/2009" 
  45. xmlns:s="library://ns.adobe.com/flex/spark" 
  46. xmlns:mx="library://ns.adobe.com/flex/halo"> 
  47.  
  48. <s:states> 
  49. <s:Statenames:Statename="normal"/> 
  50. <s:Statenames:Statename="hovered"/> 
  51. </s:states> 
  52.  
  53. <s:layout> 
  54. <s:BasicLayout/> 
  55. </s:layout> 
  56.  
  57. <s:Buttonlabels:Buttonlabel="{data}"baseColor.hovered="#FF0000"/> 
  58.  
  59. </s:ItemRenderer> 
  60.  

這個示例中使用的項目渲染器實際上是最基本的。它是一個只包含一個按鈕的ItemRenderer實例,簡單明了并且很容易看到產(chǎn)生的結(jié)果。

【編輯推薦】

  1. Flex基礎(chǔ) Flex布局學(xué)習(xí)手冊
  2. 深入剖析Flex Builder布局和導(dǎo)航
  3. 學(xué)習(xí)總結(jié) 在Flex中如何嵌入Flex字體
  4. 揭開Flex正則表達(dá)式的神秘面紗
  5. FlexBuilder開發(fā)方法及特點解析 
責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-08-13 14:45:58

Flex4布局

2010-08-06 15:20:25

Flex Builde

2014-12-10 10:37:45

Android自定義布局

2010-08-03 16:21:54

FlexFlash

2010-08-04 08:42:28

Flex和Flash

2010-08-13 09:54:23

Flex字體

2010-08-10 09:08:29

HTMLTemplatFlex4

2010-08-06 10:56:11

Flex4MyEclipse

2021-08-16 14:45:38

鴻蒙HarmonyOS應(yīng)用

2010-08-04 13:52:53

Flex事件機(jī)制

2010-08-02 12:44:01

Flex3Flex4

2010-08-13 09:05:09

Flex4Halo

2010-08-02 11:09:45

Flex4

2010-08-13 11:34:54

Flex自定義事件

2010-09-13 09:17:27

DIV頁面

2010-08-09 16:01:37

Flex字體

2010-08-13 09:30:37

Flex樣式

2010-08-12 14:31:42

Flex4

2009-07-29 09:40:02

Flex 4

2010-07-27 10:03:57

Flex4
點贊
收藏

51CTO技術(shù)棧公眾號