【问题标题】:How to reference static classes in Actionscript如何在 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?基本上点语法是正确的。

标签: actionscript


【解决方案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 种方法,但是当我删除所有内容并按照你说的那样做时,它起作用了。谢谢,感谢您抽出时间来回答这样一个基本问题。
猜你喜欢
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
相关资源
最近更新 更多