学习笔记 如何使用Flex组件进行开发

开发 后端
本文向大家介绍一下Flex组件开发的概念,在Flex应用程序中ActionScript的最主要的用处大概就是使用可视化的控件和容器来开发了。

本文和大家重点讨论一下使用Flex组件开发,Flex提供了几种技术来使用可视化的控件和容器来开发,包括了用ActionScript引用Flex控件以及操控控件和容器的实例的属性。

使用Flex组件开发

在Flex应用程序中ActionScript的最主要的用处大概就是使用可视化的控件和容器来开发了。Flex提供了几种技术来完成这样工作,包括了用ActionScript引用Flex控件以及操控控件和容器的实例的属性。

引用Flex组件

为了在ActionScript中使用Flex组件,我们一般要在MXML标签中给Flex组件定义一个id属性。例如,下面的代码中,我们设置了Button控件的id属性为”myButton”:

  1. <mx:Buttonidmx:Buttonid="myButton"label="ClickMe"/> 

◆如果你并不像通过使用ActionScript来操控这个Flex组件,那么这个属性是可有可无的。

这段代码使得MXML编译器自动生成一个包含了Button实例的引用的名字为myButton的公共变量。你可以在ActionScript中通过使用这个自动生成的变量来操控Flex组件。你可以在任意的ActionScript类或代码块中通过Flex组件的id来明确的引用Button控件的实例。通过引用Flex组件的实例,你可以修改Flex组件的属性并且调用Flex组件的方法。

例如,下面的ActionScript代码块中,当用户点击了按钮的时候,程序就会改变Button控件的label属性的值:

  1. <?xmlversionxmlversion="1.0"?> 
  2.  
  3. <!--usingas/ButtonExample.mxml--> 
  4.  
  5. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"> 
  6.  
  7. <mx:Script><![CDATA[  
  8.  
  9. privatefunctionsetLabel():void{  
  10.  
  11. if(myButton.label=="ClickMe"){  
  12.  
  13. myButton.label="Clicked";  
  14.  
  15. }else{  
  16.  
  17. myButton.label="ClickMe";  
  18.  
  19. }  
  20.  
  21. }  
  22.  
  23. ]]></mx:Script> 
  24.  
  25. <mx:Buttonidmx:Buttonid="myButton"label="ClickMe"click="setLabel();"/> 
  26.  
  27. </mx:Application> 
  28.  

 

所有的MXMLFlex组件的id属性,无论它们嵌套的有多深,生成的都是已经定义好的Flex组件的公共变量。因此,在文档中所有的id属性必须是***的。这也意味着,如果你指定了Flex组件实例的id属性,你就可以在程序的任意地方来操控Flex组件:函数,外部的类文件,导入的ActionScript文件,或者内嵌代码。

◆如果Flex组件并没有id属性,你可以通过使用Flex组件的容器的一些方法来引用该Flex组件。比如getChildAt()和getChildByName()方法。

你可以参照目前内附文件或者当前对象来使用这样的关键字。

你也可以通过使用跟Flex组件名称一样的字符来引用Flex组件。要在程序中使用对象,你可以通过使用方括号,方括号内存放的就是跟Flex组件名称一样的字符串。这样你就得到了该对象的引用。

下面的例子中,通过使用字符串来获取对象的引用,然后改变每个Button控件的样式:

  1. <?xmlversionxmlversion="1.0"?> 
  2.  
  3. <!--usingas/FlexComponents.mxml--> 
  4.  
  5. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"> 
  6.  
  7. <mx:Script><![CDATA[  
  8.  
  9. privatevarnewFontStyle:String;  
  10.  
  11. privatevarnewFontSize:int;  
  12.  
  13. publicfunctionchangeLabel(s:String):void{  
  14.  
  15. s="myButton"+s;  
  16.  
  17. if(this[s].getStyle("fontStyle")=="normal"){  
  18.  
  19. newFontStyle="italic";  
  20.  
  21. newFontSize=18;  
  22.  
  23. }else{  
  24.  
  25. newFontStyle="normal";  
  26.  
  27. newFontSize=10;  
  28.  
  29. }  
  30.  
  31. this[s].setStyle("fontStyle",newFontStyle);  
  32.  
  33. this[s].setStyle("fontSize",newFontSize);  
  34.  
  35. }  
  36.  
  37. ]]></mx:Script> 
  38.  
  39. <mx:Buttonidmx:Buttonid="myButton1" 
  40.  
  41. click="changeLabel('2')" 
  42.  
  43. label="ChangeOtherButton'sStyles" 
  44. /> 
  45.  
  46. <mx:Buttonidmx:Buttonid="myButton2" 
  47.  
  48. click="changeLabel('1')" 
  49.  
  50. label="ChangeOtherButton'sStyles" 
  51.  
  52. /> 
  53.  
  54. </mx:Application> 
  55.  

 这个小技巧有着比较特殊的用处,当你在用Repeater控件或用ActionScript创建了一个对象的时候,你不必知道对象的名字你也可以在运行时来引用该对象。但是,当你用ActionScript实例化一个对象的时候,如果要添加该对象到应用程序的属性数组(按本人的理解:该数组为应用程序的数组,包含程序中定义的Flex组件的实例)中去,你必须定义该变量为public并且要在整个的类的作用域范围定义,而不是在函数的内部定义。

【编辑推荐】

  1. 深入学习Flex组件生命周期
  2. 技术分享 如何重写Flex组件
  3. 技术前沿 看Flex客户端缓存技术如何使用
  4. 解析Flex全屏模式设置方法
  5. Flex内存泄露解决方法和内存释放优化原则

 

责任编辑:佚名 来源: chinaunix.net
相关推荐

2010-07-27 10:39:25

Flex组件

2010-07-30 09:28:09

Flex数据绑定

2010-08-03 14:52:49

Flex界面设计

2010-08-12 13:39:46

Flex组件

2010-08-06 13:22:48

FlexCSS

2010-07-27 11:08:12

Flex

2010-08-05 10:29:11

Flex效果

2022-02-17 20:07:45

Flex鸿蒙Flex组件

2022-02-16 15:32:58

FlexUI框架容器组件

2010-08-10 16:41:54

FlexJSP

2010-08-04 09:26:27

Flex数据

2010-07-30 13:40:59

Flex开发

2010-08-12 11:05:33

Flex数据绑定

2010-08-11 15:35:47

Flex DataGr

2010-07-30 13:08:38

Flex调用JavaS

2010-08-10 15:26:38

Flex应用程序

2010-08-09 10:34:05

Flex背景

2010-08-12 13:34:13

Flex验证组件

2010-08-10 16:30:05

Flex上传文件

2010-08-05 15:46:13

Flex行为Flex效果
点赞
收藏

51CTO技术栈公众号