当前位置:  开发笔记 > 编程语言 > 正文

AS3:调用静态类方法 - 类和方法名称是字符串

如何解决《AS3:调用静态类方法-类和方法名称是字符串》经验,为你挑选了1个好方法。

我有一个丑陋的问题.我有两个字符串变量(className和staticMethod)存储类的名称,它是我必须调用的静态方法:

package {
 import flash.display.Sprite;
 import flash.utils.getDefinitionByName;
 import flash.utils.getQualifiedClassName;

 public class ClassPlay extends Sprite {

  public function ClassPlay() {
   new Foo();
   var className:String = 'Foo';
   var staticMethod:String = 'bar';
   var classClass:Class = getDefinitionByName(className) as Class;
   try {
    classClass[staticMethod]();
   } catch (e:Error) {}
  }
 }
}

这是主题类:

package {
 public class Foo {
  public static function bar():void {trace('Foo.bar() was called.');}
 }
}

它完美地运作.当你注释掉这个(第9行)时的问题:

// new Foo();

如果没有这一行,它将以异常退出:

ReferenceError: Error #1065: Variable Foo is not defined.

没有那个实例,我怎么能这样做呢?如果这是不可能的,有没有办法从字符串变量实例化类?或者,如果这仍然是一个不好的做法,你会怎么做?(我必须使用那两个未知的字符串变量.)

提前致谢.



1> Anon...:

原因是编译器将删除不必要的类 - 如果您没有在Foo某个地方明确引用该类,它将不会出现在您的最终应用程序中.

您可以在其他地方引用它并仍然强制它被加载 - 例如,对类的引用的静态数组.


在as3中使用依赖注入时,这也是一个常见问题.有关其他选项,请查看http://www.springactionscript.org/docs/reference/html/Class-inclusion.html(注意:该网站现已关闭,但最终应该返回).
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有