用ActionScript创建可视化的Flex组件

开发 后端
用ActionScript创建可视化的Flex组件的方法你是否了解,这里和大家分享一下,用同样的方式你也可以创建任何ActionScript类的实例。

本文和大家重点讨论一下用ActionScript创建可视化的Flex组件,当创建Flex组件完成后,你可以使用标准的赋值语句来重新设置Flex组件的属性的值。

用ActionScript创建可视化的Flex组件

通过使用ActionScript中的new操作符你可以程序化的创建可视化的Flex组件,用同样的方式你也可以创建任何ActionScript类的实例。创建后的Flex组件的属性都有默认的值,但是Flex组件此时并没有父类和子类(包含各式各样的DisplayObject),而且此时Flex组件并不在FlashPlayer或AdobeAIR的显示列表中,因此无法在界面看到该Flex组件。当创建Flex组件完成后,你可以使用标准的赋值语句来重新设置Flex组件的属性的值。

◆如果你要把新创建的Flex组件添加到容器中去,必须使用容器的addChild()和addChildAt()方法,通过这种方法可以使得Flex组件变成Flex程序的显示层级的一部分。当Flex组件***次被添加到容器的时候,Flex组件的子实例就被创建了。在Flex组件的生命周期子实例创建的时候比较晚,因此你可以在子实例创建完成后设置它的属性。

当创建可视化组建的时候,你必须导入合适的包。在大多数情况下,这些包基本都在mx.controls包中,具体的你可以查阅AdobeFlexLanguageReference

下面的例子中,创建了一个Button控件并田间到HBox中去:

  1. <?xmlversionxmlversion="1.0"?> 
  2.  
  3. <!--usingas/ASVisualComponent.mxml--> 
  4.  
  5. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"> 
  6.  
  7. <mx:Script><![CDATA[  
  8.  
  9. importmx.controls.Button;  
  10.  
  11. publicvarbutton2:Button;  
  12.  
  13.  
  14.  
  15. publicfunctioncreateObject():void{  
  16.  
  17. button2=newButton();  
  18.  
  19. button2.label="ClickMe";  
  20.  
  21. hb1.addChild(button2);  
  22.  
  23. }  
  24.  
  25. ]]></mx:Script> 
  26.  
  27. <mx:HBoxidmx:HBoxid="hb1"> 
  28.  
  29. <mx:Buttonlabelmx:Buttonlabel="CreateObject"click="createObject()"/> 
  30.  
  31. </mx:HBox> 
  32.  
  33. </mx:Application> 
  34.  

 Flex容器中新创建的元素将会排在容器的***。如果你并不像让新创建的元素排在容器的***,可是使用addChildAt()方法来改变元素的顺序。你也可以在调用addChild()方法后使用setChildIndex()方法来实现,不过这样做的话效率会降低。

你应该为每个动态创建的Flex组件定义实例变量并且将新创建的Flex组件的实例存储在变量里,就像当你为Flex组件的实例标签设置了id属性的时候MXML编译器所做的那样。然后你就可以访问你刚才动态创建的Flex组件。

◆如果要在程序中移除一个Flex组件,你需要使用removeChild()或removeChildAt()方法。你也可以使用removeAllChildren()方法来移除容器的所有Flex组件。调用这些方法并不是真正的删除这些对象。如果你在程序没有这些对象的任何引用,那么FlashPlayer的垃圾回收机制就会在将来的某个时间点进行回收。如果在程序中存储了该对象的引用,那么系统将会不从内存中移除该对象。

在有些情况下,你是通过使用MXML标签来定义Flex组件的。你可以设置容器的creationPolicy属性为none来延迟容器中Flex组件的实例化。为了创建那些用标签定义了但没有实例化的Flex组件,你可以使用createComponentFromDescriptor()和createComponentsFromDescriptors()方法。使用这些方法可以让你程序化的创建Flex组件而不是声明化的。

可以支持addChild()方法的Flex组件是UIComponent。换句话说,如果你创建了一个并不是mx.core.UIComponent的子类的对象,在你将该对象添加到容器之前你必须用UIComponent封装该对象。下面的例子中,创建了并不是UIComponent子类的Sprite对象,在将该对象添加到Panel容器之前将对象添加为UIComponent的子对象:

  1. <?xmlversionxmlversion="1.0"?> 
  2.  
  3. <!--usingas/AddingChildrenAsUIComponents.mxml--> 
  4.  
  5. <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"> 
  6.  
  7. <mx:Script><![CDATA[  
  8.  
  9. importflash.display.Sprite;  
  10.  
  11. importmx.core.UIComponent;  
  12.  
  13. privatevarxLoc:int=20;  
  14.  
  15. privatevaryLoc:int=20;  
  16.  
  17. privatevarcircleColor:Number=0xFFCC00;  
  18.  
  19. privatefunctionaddChildToPanel():void{  
  20.  
  21. varcircle:Sprite=newSprite();  
  22.  
  23. circle.graphics.beginFill(circleColor);  
  24.  
  25. circle.graphics.drawCircle(xLoc,yLoc,15);  
  26.  
  27. varc:UIComponent=newUIComponent();  
  28.  
  29. c.addChild(circle);  
  30.  
  31. panel1.addChild(c);  
  32.  
  33. xLoc=xLoc+5;  
  34.  
  35. yLoc=yLoc+1;  
  36.  
  37. circleColor=circleColor+20;  
  38.  
  39. }  
  40.  
  41. ]]></mx:Script> 
  42.  
  43. <mx:Panelidmx:Panelid="panel1"height="250"width="300"verticalScrollPolicy="off"/> 
  44.  
  45. <mx:Buttonidmx:Buttonid="myButton"label="ClickMe"click="addChildToPanel();"/> 
  46.  
  47. </mx:Application> 
  48.  

【编辑推荐】

  1. 学习笔记 如何使用Flex组件进行开发
  2. AS方式重写Flex组件常规步骤
  3. 技术前沿 看Flex客户端缓存技术如何使用
  4. 解析Flex全屏模式设置方法
  5. Flex内存泄露解决方法和内存释放优化原则

 


 

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

2010-08-12 13:52:38

Flex组件

2010-07-30 13:52:17

Flex组件

2010-08-12 13:39:46

Flex组件

2021-09-27 08:31:01

数据可视化柱状图折现图

2020-03-11 14:39:26

数据可视化地图可视化地理信息

2010-08-09 10:39:14

FlexACtionSCrip

2021-11-19 08:30:39

H5-Dooring 可视化组件商店

2021-07-27 08:29:33

可视化组件商店H5-Dooring

2017-09-01 19:49:50

Python工具地图

2022-08-23 12:32:37

Python可视化图表

2020-12-29 08:04:16

可视化地图组件日历组件

2017-09-05 08:35:09

Python可视化地图

2022-09-21 23:29:15

Python点云数据

2017-10-14 13:54:26

数据可视化数据信息可视化

2022-08-26 09:15:58

Python可视化plotly

2009-04-21 14:26:41

可视化监控IT管理摩卡

2009-01-11 10:14:19

可视化服务器摩卡

2013-07-10 09:56:02

软件定义网络SDN

2020-11-02 13:54:41

Python可视化决策树

2024-03-22 08:21:48

可视化搭建平台组件商店H5-Dooring
点赞
收藏

51CTO技术栈公众号