假设我有以下类
public class Scene{
public static var title="new scene";
public function Scene(){}
public static function start() { trace("scene started"); }
}
如何访问Scene类的静态变量和函数?
var i:Class = Scene;
trace(i.title);
i.start();
我正试图弄清楚分配给Class的变量是如何在actionscript中工作的。欢迎任何提示。谢谢
静态方法从类中调用:
trace(Scene.title);
Scene.start();
Singleton模式通过接口类实现构造函数、本地引用和潜在的抽象。
Scene
作为单例的示例:
package
{
public class Scene
{
private static var instance:Scene = new Scene();
public static function getInstance():Scene
{
return instance;
}
public var title:String = "new scene";
public function Scene()
{
if (instance)
throw new Error("Scene is a singleton and can only be accessed through Scene.getInstance()");
}
public function start():void
{
trace("scene started.");
}
}
}
您现在的示例实现是:
var i:Scene = Scene.getInstance();
trace(i.title);
i.start();
这就是访问动态类(场景)&它的特性/方法:
var myDynamicClasses:Array = [Scene]; // Required
var i:Class = Class(getDefinitionByName("Scene"));
trace(i.title);
i.start.call();
如果不包括第一行,这可能会引发错误。因为,当编译器注意到类Scene(不是adobe包中的那个)没有被使用时,它会忽略它。因此,它将不可用于动态初始化。
我们可以通过将这些类名放在变量中来强制编译器包含这些类,或者像上面那样声明一个数组作为快速破解。
如果你有很多动态类,你可以在这个数组中添加对它们的引用&编译器将包括每个类,以便进行动态初始化。
var i:Class = Scene;
trace(i.title);
应该抛出一个错误,因为编译器在到达第2行时不能再假设i是一个场景。如果您要强制Class对象,它应该可以工作。
var i:Class = Scene;
trace((Scene(Class).title);