本例将知识内涵iruguo通过调用类的getDefinitionByName()方法来创建组件实例。
'; } else { whichEl.style.display = 'none'; sb.innerHTML='
显示代码'; whichEl.witdh="300px"; } }
隐藏代码 DE<<?xml version="1.0" encoding="utf-8"?> <!-- http://blog.flexexamples.com/2008/08/28/creating-a-component-instance-by-class-name-in-actionscript-30/ --> <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> DE< |
查看Demo演示