share MXML Test 081225 XML から Flex Control を動的生成するサンプル taiga forked:5favorite:6lines : 114license : All rights reserved modified : 2008-12-25 15:37:37 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx = "http://www.adobe.com/2006/mxml" layout = "vertical" > <!-- XML から Flex Control を動的生成するサンプル wonderfl 上で動かしている以上、何の得もありませんが、、、 --> <mx:Style> Application { background-gradient-colors: #ffffff, #000000; } .hogeStyle { color : #333333; font-size: 20; } </mx:Style> <mx:Script> <![CDATA[ import mx.controls.*; import mx.core.UIComponent; /** * サンプル XML データ */ private static const SAMPLE_XML:XML = <component> <Button id = 'hoge' name = 'hoge' x = '100' y = '100' width = '200' height = '50' label = 'ほげ' styleName = 'hogeStyle' /> <TextInput id = 'fuga' name = 'fuga' x = '100' y = '170' width = '200' height = '20' /> <TextArea id = 'piyo' name = 'piyo' x = '100' y = '200' width = '200' height = '300' /> </component>; /** * @private * 子生成 */ protected override function createChildren():void { super.createChildren(); var attributeName :XML; var child :XML; var xml :XML = SAMPLE_XML; var list :XMLList = xml.children(); var componentName :String; var properties :Object; for each(child in list) { componentName = child.localName().toString(); properties = new Object(); for each(attributeName in child.attributes()) { properties[attributeName.localName()] = attributeName.toString(); } generateComponent(componentName, properties); } } /** * @private * Flex Control の生成 */ private function generateComponent(componentName:String, properties:Object):void { var clazz :Class = getClassByAlias(componentName); var newObject :UIComponent = new clazz(); var xml :XML = describeType(clazz); var propDesc :XML; var list :XMLList; var prop :String; var propType :String; for(prop in properties) { list = xml.factory.accessor.(@name == prop); if(!list) { list = xml.factory.variable.(@name == prop); } if(list && list.length() > 0) { propDesc = list[0] as XML; propType = propDesc.@type.toString(); switch(propType) { case "Object": case "String": newObject[prop] = properties[prop]; break; // case "Date": // newObject[prop] = properties[prop]; // TODO:日付のパース // break; case "Number": newObject[prop] = parseFloat(properties[prop]); break; case "int" : case "uint" : newObject[prop] = parseInt(properties[prop]); break; } } } addChild(newObject); } registerClassAlias("Button", Button ); registerClassAlias("CheckBox", CheckBox ); registerClassAlias("ColorPicker", ColorPicker ); registerClassAlias("ComboBox", ComboBox ); registerClassAlias("Image", Image ); registerClassAlias("Label", Label ); registerClassAlias("Text", Text ); registerClassAlias("TextArea", TextArea ); registerClassAlias("TextInput", TextInput ); registerClassAlias("RadioButton", RadioButton ); ]]> </mx:Script> </mx:Application> Code Fullscreen Preview Fullscreen Nekyo uwi raben nyamogera hikipuro hacker_47o59.. sort new page view favorite forked pv0 forked from: MXML Test 081225 XML から Flex Control を動的生成するサンプル january12 forked:0 fav:0 lines:115 tag: pv0 forked from: MXML Test 081225 XML から Flex Control を動的生成するサンプル hacker_lead102 forked:0 fav:0 lines:115 tag: pv272 flex勉強中。ごちゃごちゃ nyamogera forked:0 fav:0 lines:184 tag: pv0 forked from: MXML Test 081225 XML から Flex Control を動的生成するサンプル Siya_F forked:0 fav:0 lines:114 tag: pv823 forked from: MXML Test 081225 XML から Flex Control を動的生成するサンプル fff forked:1 fav:3 lines:127 tag: