如何在 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);
来自 Adobe Flash 平台的 ActionScript 3.0 参考:Statements, Keywords & Directives
用法
class someClassName static var varName; static const kName; static function methodName()
你只能在类定义中使用静态,不能在接口中使用 定义。
静态类成员不会被继承。你不能引用静态的 使用子类名称的类成员,就像在 Java 或 C++ 中一样。 但是,您可以引用类中的静态变量或方法 或子类,不使用任何限定符。请参阅下面的示例。
您不能在静态文件中使用 super 语句或
this
关键字 方法。
【讨论】:
我不知道我做错了什么,我尝试了 15 种方法,但是当我删除所有内容并按照你说的那样做时,它起作用了。谢谢,感谢您抽出时间来回答这样一个基本问题。以上是关于如何在 Actionscript 中引用静态类的主要内容,如果未能解决你的问题,请参考以下文章