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] exception, information=TypeError: Error #1034: Type Coercion failed: cannot convert Settings$ to Namespace.」というエラーが表示されます。

私はドット構文を試しました:

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);

Adobe Flash Platform の ActionScript 3.0 リファレンスから:ステートメント、キーワード、ディレクティブ

使用法

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

インターフェイス定義ではなく、クラス定義でのみ static を使用できます。

静的クラス メンバーは継承されません。Java や C++ のように、サブクラスの名前を使用して静的クラス メンバーを参照することはできません。ただし、修飾子を使用せずに、クラスまたはサブクラス内の静的変数またはメソッドを参照できます。以下の例を参照してください。

this静的メソッド内でsuper ステートメントまたはキーワードを使用することはできません。

于 2013-05-17T22:23:01.723 に答える