1

我提前为这个问题的新颖性道歉;我认为我没有掌握 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] 异常,信息=TypeError:错误 #1034:类型强制失败:无法将 Settings$ 转换为命名空间。”

我尝试了点语法:

var a:int = Settings.mapx;

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

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

4

1 回答 1

2

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 参考:语句、关键字和指令

用法

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

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

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

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

于 2013-05-17T22:23:01.723 回答