Flex3类加载器MyClassLoader.as

 最近做项目用了很多共通的处理类,贴出来共享一下,如有不对之处,请指正,欢迎交流。

 


//
//  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 {}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值