说我有以下课程
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();
我正在试图找出如何在ActionScript中分配的变量。 任何提示都会受到欢迎。感谢。
答案 0 :(得分:1)
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();
答案 1 :(得分:1)
这是你可以访问动态类(Scene)和&的方法。它的属性/方法:
var myDynamicClasses:Array = [Scene]; // Required
var i:Class = Class(getDefinitionByName("Scene"));
trace(i.title);
i.start.call();
如果未包含第一行,则可能会抛出错误。因为,当编译器注意到类Scene(不是adobe的包中的那个)没有被使用时,它会忽略它。因此,它不适用于动态初始化。
我们可以强制编译器通过将这些类名放在变量中来包含这些类,或者将上面的数组声明为快速入侵。
如果您有许多动态类,可以在此数组中添加对它们的引用。编译器将包含每个类以进行动态初始化。
答案 2 :(得分:1)
var i:Class = Scene;
trace(i.title);
应该抛出一个错误,因为当编译器到达第2行时,编译器不能再认为我是一个场景。如果你强制使用Class对象,它应该可以工作。
var i:Class = Scene;
trace((Scene(Class).title);