Flex中的组件
2008-10-13 13:18 宝宝合凤凰 阅读(281) 评论(0) 收藏 举报Flex提供了一种基于组件的开发模式,我们说的组件其实上是mxml中的一些标签,actionscript的对象,这些组件可以从文件中分离出来成为一个外部文件,可以被开发者来重用。
下面我们先利用mxml标签来创建一个组件,组件的文件名为PanelComponent.mxml。
- <?xml version="1.0" encoding="utf-8" ?>
- <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" width="250"
- height="250" title="MXML Component">
- <mx:Label text="This is a MXML Component" />
- </mx:Panel>
这个组件的作用很明显,就是显示一个Panel,Panel有一个子节点Label用来显示一些内容。现在我们就来看看组件是如何被引入调用的。
- <?xml version="1.0" encoding="utf-8" ?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- xmlns:comp="*">
- <comp:PanelComponent />
- </mx:Application>
引入组件的方式是为<mx:Application />标签增加一个命名空间的属性,然后写上组件的相对路径名,这里如果有子文件夹的话,用'.'代替'\'或者是'/'进行分隔。调用它的方式很简单,新的命名空间+上该组件的文件名就好了。
现在我们该用ActionScript来创建组件了,组件的文件名为PanelComponent2.as
- package
- {
- import mx.containers.Panel;
- import mx.controls.Label;
- public class PanelComponent2 extends Panel
- {
- public function PanelComponent2()
- {
- //设置组件属性
- this.title = "ActionScript Component";
- this.width = 250;
- this.height = 250;
- var label:Label = new Label();
- label.text = "This is a Panel Component";
- //为组件添加子节点Label来显示一些内容
- this.addChild(label);
- }
- }
- }
引入和调用他的过程。
- <?xml version="1.0" encoding="utf-8" ?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- xmlns:comp="*">
- <comp:PanelComponent2 />
- </mx:Application>
当经过编译以后运行会发现两组代码表现出来的东西是一样的。
mxml标签其实就代表了相对应的actionscript对象,有时候我们可以扩展一些组件来实现一些应用,制作一些自己的组件也可能会为开发带来便捷。
我们在使用mxml标签的时候会有很多的标签属性可以让我们来设置,这样让我们对标签的控制更加的细致了。我们在制作自定义组件的时候也是可以实现这些功能。
现在我们要为ComboBoxComponent组件添加setMyDP的属性。
- package
- {
- import mx.collections.ArrayCollection;
- import mx.controls.ComboBox;
- public class ComboBoxComponent extends ComboBox
- {
- private var _myDP:ArrayCollection;
- //属性setMyDP相对应的set方法
- public function set setMyDP(dataP:ArrayCollection):void {
- _myDP = dataP;
- _myDP.addItemAt("Select a value...", 0);
- this.dataProvider = _myDP;
- }
- //属性setMyDP相对应的get方法
- public function get setMyDP():ArrayCollection {
- return _myDP;
- }
- //构造方法
- public function ComboBoxComponent()
- {
- super();
- }
- }
- }
以上的代码表示为一个继承了ComboBox下拉菜单的组件提供了setMyDP属性,这个属性的作用主要是为组件提供数据源。用法和普通标签的属性设置一下,但是要注意的变量的类型是要匹配的。
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
- xmlns:comp="*">
- <mx:Script>
- <![CDATA[
- import mx.collections.ArrayCollection;
- [Bindable]
- private var myAC:ArrayCollection = new ArrayCollection(
- ["First Value", "Second Value", "Third Value"]);
- ]]>
- </mx:Script>
- <comp:ComboBoxComponent id="myCB" setMyDP="{myAC}" />
- </mx:Application>
浙公网安备 33010602011771号