我提前为这个问题的新意而道歉;我想我不是在掌握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:无法将Settings $转换为Namespace。”
我尝试了点语法:
var a:int = Settings.mapx;
并得到一个不同的错误,“通过带有静态类型Class的引用访问可能未定义的属性mapx。”
但我真正想要的是一个全局静态变量文件,比如在C ++中,并且无法在Actionscript中找到一种方法。
答案 0 :(得分: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);
来自Adobe Flash Platform的ActionScript 3.0参考:Statements, Keywords & Directives
用法
class someClassName { static var varName; static const kName; static function methodName() { } }
您只能在类定义中使用静态,而不能在接口中使用静态 定义
不继承静态类成员。你不能引用静态 使用子类名称的类成员,就像在Java或C ++中一样。 但是,您可以引用类中的静态变量或方法 或子类,不使用任何限定符。请参阅下面的示例。
您不能在静态内使用super语句或
this
关键字 方法