ActionScript 3.0中通过调用getDefintionByName函数动态创建按钮等控件的例子
By Minidxer | August 31, 2008
接下来的例子演示了ActionScript 3.0中通过调用getDefintionByName函数,动态创建按钮等控件。
让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):
下面是完整代码(或点击这里察看):
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application name="getDefinitionByName_test"
- xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:Script>
- <![CDATA[
- import mx.core.UIComponent;
- import flash.utils.getDefinitionByName;
- import mx.controls.*;
- /**
- * Create references to component classes so the classes get
- * included in the SWF document.
- */
- private var dummyArr:Array = [Button, CheckBox, ComboBox,
- List, TextInput, TextArea];
- private function createBtn_click(evt:MouseEvent):void {
- var className:String = comboBox.selectedItem.toString();
- // Convert class name to Class object.
- var cls:Class = getDefinitionByName(className) as Class;
- // Create a new instance of the class.
- var instance:UIComponent = new cls();
- if (instance) {
- switch (instance.className) {
- case "Button":
- Button(instance).label = "I am a Button";
- break;
- case "CheckBox":
- CheckBox(instance).label = "I am a CheckBox";
- break;
- case "ComboBox":
- ComboBox(instance).dataProvider = ["I am a ComboBox"];
- break;
- case "List":
- List(instance).dataProvider = ["I am a List"];
- instance.width = 100;
- break;
- case "TextInput":
- TextInput(instance).text = "I am a TextInput";
- break;
- case "TextArea":
- TextArea(instance).text = "I am a TextArea";
- break;
- }
- // Remove all children and add new child.
- canvas.removeAllChildren();
- canvas.addChild(instance);
- }
- }
- ]]>
- </mx:Script>
- <mx:ApplicationControlBar dock="true">
- <mx:Form styleName="plain"
- defaultButton="{createBtn}">
- <mx:FormItem label="Class:"
- direction="horizontal">
- <mx:ComboBox id="comboBox">
- <mx:dataProvider>
- <mx:Array>
- <mx:String>mx.controls.Button</mx:String>
- <mx:String>mx.controls.CheckBox</mx:String>
- <mx:String>mx.controls.ComboBox</mx:String>
- <mx:String>mx.controls.List</mx:String>
- <mx:String>mx.controls.TextInput</mx:String>
- <mx:String>mx.controls.TextArea</mx:String>
- </mx:Array>
- </mx:dataProvider>
- </mx:ComboBox>
- <mx:Button id="createBtn"
- label="Create"
- click="createBtn_click(event);" />
- </mx:FormItem>
- </mx:Form>
- </mx:ApplicationControlBar>
- <mx:Canvas id="canvas"
- horizontalCenter="0"
- verticalCenter="0" />
- </mx:Application>
代码:Peter deHaan 翻译/整理/编译:中文Flex例子
Topics:
Flex |
No Comments » |
976 views
Tags: className, getDefinitionByName