Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 是否可以将类放入变量中并访问类';actionscript3中的静态变量和函数?_Class_Variables_Reflection_Actionscript_Hint - Fatal编程技术网

Class 是否可以将类放入变量中并访问类';actionscript3中的静态变量和函数?

Class 是否可以将类放入变量中并访问类';actionscript3中的静态变量和函数?,class,variables,reflection,actionscript,hint,Class,Variables,Reflection,Actionscript,Hint,假设我上了下面的课 public class Scene{ public static var title="new scene"; public function Scene(){} public static function start() { trace("scene started"); } } 如何访问场景类的静态变量和函数 var i:Class = Scene; trace(i.title); i.start(); 我试图弄清楚在actionscript中分配给

假设我上了下面的课

public class Scene{ 
  public static var title="new scene";
  public function Scene(){}
  public static function start() { trace("scene started"); }
}
如何访问场景类的静态变量和函数

var i:Class = Scene;
trace(i.title);
i.start();
我试图弄清楚在actionscript中分配给类的变量是如何工作的。 欢迎提供任何提示。谢谢。

我们在课堂上打电话:

trace(Scene.title);
Scene.start();
单例模式通过接口类支持构造函数、本地引用和潜在的抽象

场景
作为单件的示例:

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();
从类中调用:

trace(Scene.title);
Scene.start();
单例模式通过接口类支持构造函数、本地引用和潜在的抽象

场景
作为单件的示例:

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();
如果不包括第一行,则可能引发错误。因为,当编译器注意到类场景(不是adobe包中的场景)未被使用时,它会忽略它。因此,它将不可用于动态初始化

var i:Class = Scene;
trace(i.title);
我们可以通过将这些类名放在变量中或像上面那样声明一个数组来强制编译器包含这些类


如果您有许多动态类,可以在此数组中添加对它们的引用&编译器将包含每个类以进行动态初始化。

这是访问动态类(场景)及其属性/方法的方式:

var myDynamicClasses:Array = [Scene];   // Required

var i:Class = Class(getDefinitionByName("Scene"));
trace(i.title);
i.start.call();
var i:Class = Scene;
trace(i.title);
如果不包括第一行,则可能引发错误。因为,当编译器注意到类场景(不是adobe包中的场景)未被使用时,它会忽略它。因此,它将不可用于动态初始化

var i:Class = Scene;
trace(i.title);
我们可以通过将这些类名放在变量中或像上面那样声明一个数组来强制编译器包含这些类

如果您有许多动态类,那么可以在这个数组中添加对它们的引用&编译器将包含每个类以进行动态初始化

var i:Class = Scene;
trace(i.title);
应该抛出一个错误,因为当它到达第2行时,编译器不能再假设我是一个场景。如果要强制类对象,它应该可以工作

var i:Class = Scene;
trace((Scene(Class).title);
应该抛出一个错误,因为当它到达第2行时,编译器不能再假设我是一个场景。如果要强制类对象,它应该可以工作

var i:Class = Scene;
trace((Scene(Class).title);

OP并不是真的想要一个单例类。他只是想初始化一个动态类……OP并不是真的想要一个单例类。他只是想初始化一个动态类……这看起来过于动态和粗糙,消除了类型检查,因为
i.foo
不会抛出编译器警告。当然,还有更好的模式。但当有一个关于某件事是否可能的特定问题时,我不会担心设计模式。此外,编译器在上述情况下不会抛出警告。这似乎过于动态和粗糙,消除类型检查,因为
i.foo
不会抛出编译器警告。当然,还有更好的模式。但当有一个关于某件事是否可能的特定问题时,我不会担心设计模式。此外,在上述情况下,编译器不会抛出警告。