如何在 Actionscript 中引用静态类

Posted

技术标签:

【中文标题】如何在 Actionscript 中引用静态类【英文标题】:How to reference static classes in Actionscript 【发布时间】:2013-05-13 04:34:05 【问题描述】:

对于这个问题的新意,我提前道歉;我认为我没有掌握 Actionscript 的基础知识,但无法在其他地方找到答案。

我想要的是一些像 C++ 中那样的全局常量。在 C++ 中,我只需要一个文件,我会在其中 #define MAP_HEIGHT 20 或类似的东西,当我将文件包含在顶部时,它们将是全局可访问的。在 Actionscript 中,我尝试创建一个静态类,如下所示:

package  

public class Settings 

    public const mapx:int = 20;

    public function Settings() 



但是当我尝试在我的代码中使用冒号语法引用它时

var a:int = Settings::mapx;

我收到错误“[Fault] exception, information=TypeError: Error #1034: Type Coercion failed: cannot convert Settings$ to Namespace。”

我尝试了点语法:

var a:int = Settings.mapx;

并得到一个不同的错误,“通过静态类型 Class 的引用访问可能未定义的属性 mapx。”

但我真正想要的是一个全局静态变量文件,就像在 C++ 中一样,但在 Actionscript 中找不到方法。

【问题讨论】:

你在哪里定义a var?基本上点语法是正确的。 【参考方案1】:

使用static 关键字标记变量、常量和函数,如:

package

    public class MathUtil
    

        public static const PI:Number = 3.141592653589;

        public static function deg2rad(angle:Number):Number
        
            angle = !isNaN(angle) ? (angle) : (0);

            return angle * PI / 180;
        

    

那么你可以使用点符号。

var pi:Number = MathUtil.PI;
var angle:Number = MathUtil.deg2rad(45);

来自 Adob​​e Flash 平台的 ActionScript 3.0 参考:Statements, Keywords & Directives

用法

class someClassName  
  static var varName; 
  static const kName;
  static function methodName()  

你只能在类定义中使用静态,不能在接口中使用 定义。

静态类成员不会被继承。你不能引用静态的 使用子类名称的类成员,就像在 Java 或 C++ 中一样。 但是,您可以引用类中的静态变量或方法 或子类,不使用任何限定符。请参阅下面的示例。

您不能在静态文件中使用 super 语句或 this 关键字 方法。

【讨论】:

我不知道我做错了什么,我尝试了 15 种方法,但是当我删除所有内容并按照你说的那样做时,它起作用了。谢谢,感谢您抽出时间来回答这样一个基本问题。

以上是关于如何在 Actionscript 中引用静态类的主要内容,如果未能解决你的问题,请参考以下文章

显式引用***包中的 actionscript 类

ActionScript 中的绑定如何工作?

ActionScript 3 AS3 DrawPixelBorderAroundStage静态类

ActionScript 3 AS3按类名获取类引用

如何初始化对类内变量的静态引用,以便在嵌套类中使用

如何从类变量中引用静态方法[重复]