⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objectconverter.as

📁 jquery插件
💻 AS
字号:
package org.flowplayer.util {
	import flash.utils.describeType;
	
	public class ObjectConverter {
		private var _input:Object;

		public function ObjectConverter(value:*) {
			_input = value;
		}
		
		public function convert():Object {
			return process(_input);
		}
		
		private function process(value:*):Object {
			if (value is String) {
				return value;
			} else if ( value is Number ) {
				return value;
			} else if ( value is Boolean ) {
				return value;
			} else if ( value is Array ) {
				return convertArray(value as Array);
			} else if ( value is Object && value != null ) {
				return convertObject(value);
			}
            return value;
		}
		
		private function convertArray(a:Array):Array {
			var arr:Array = new Array();
			for (var i:int = 0; i < a.length; i++) {
				arr.push(process(a[i]));	
			}
			return arr;
		}
		
		private function convertObject(o:Object):Object {
			var obj:Object = new Object();
			var classInfo:XML = describeType(o);
			
			if (classInfo.@name.toString() == "Object") {
				var value:Object;
				for (var key:String in o) {
					value = o[key];
					if (value != null && !(value is Function)) {
						obj[key] = value;
					}
				}
			} else { // o is a class instance
				// Loop over all of the *annotated* variables and accessors in the class and convert
				var exposed:XMLList = classInfo.*.(hasOwnProperty("metadata") && metadata.@name=="Value");
				for each (var v:XML in exposed) {
					if (o[v.@name] != null) {
						var key2:String = v.metadata.arg.@key == "name" ? v.metadata.arg.@value : v.@name.toString();
						obj[key2] = process(o[v.@name]);
					}
				}
				
			}
			return obj;
		}

		
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -