最近做项目用了很多共通的处理类,贴出来共享一下,如有不对之处,请指正,欢迎交流。
//
// My System
// Copyright 2008-2009 My Systems Incorporated
// All Rights Reserved.
//
// NOTICE: My System permits you to use, modify, and distribute this file
// Langversion ActionScript 3.0
// playerversion Flash 9.0
// DATE: 2009-03-18 keren
// QQ: 994251681
// MSN: keren1515@hotmail.com
//
//flex类加载器
package org.app.utils.common
{
import flash.utils.*;
import mx.core.ClassFactory;
public class MyClassLoader
{
private static var instance:MyClassLoader = null;
public static function getInstance():MyClassLoader{
if(instance == null){
instance = new MyClassLoader(new SingletonEnforcer());
}
return instance;
}
public function MyClassLoader(enforcer:SingletonEnforcer)
{
if(enforcer==null)throw new Error("This class is singletonEnforcer.");
}
/**
* 加载一个类,并給这个类设置属性值.
* 注意:这个目标类要有参数为空的构造器,如果有参数,不知道怎么传入,目前没想好
* @param targetClass 目标class,可以是字符串,也可以是类名
* @param properties 目标class的属性值,josn格式,类似{a:'a',b:12}
*
* @return Object 目标实例对象
*/
public function loadClassByClass(targetClass:Class=null,properties:Object=null):Object{
try{
var cf:ClassFactory = new ClassFactory(targetClass);
cf.properties = properties;
return cf.newInstance();
}catch(error:Error){
throw new Error("加载类loadClassByClass()遇到错误."+error.message);
}
return null;
}
public function loadClassByName(className:String = null,properties:Object = null):Object{
try{
var cls:Class = loadAsClass(className);
var cf:ClassFactory = new ClassFactory(cls);
cf.properties = properties;
return cf.newInstance();
}catch(error:Error){
throw new Error("加载类loadClassByName()遇到错误."+error.message);
}
return null;
}
public function loadAsClass(className:String):Class{
try{
// Convert class name to Class object.
var cls:Class = getDefinitionByName(className) as Class;
return cls;
}catch(error:Error){
throw new Error("加载类loadAsClass()遇到错误."+error.message);
}
return null;
}
public function loadAsObject(className:String):Object{
try{
// Convert class name to Class object.
var cls:Class = getDefinitionByName(className) as Class;
// Create a new instance of the class.
return new cls();
}catch(error:Error){
throw new Error("加载类loadAsObject()遇到错误."+error.message);
}
return null;
}
}//end class
}//end package
class SingletonEnforcer {}