サーチ…


静的メソッドを使用して "オーバーロードされた"コンストラクタ

コンストラクターのオーバーロードはAs3では使用できません。

クラスのインスタンスを取り出す別の方法を提供するために、代替public staticメソッドを提供して、代替の "コンストラクタ"として機能させることができます。

その例は、2D点オブジェクトを表すflash.geom.Pointです。ポイントを定義する座標は

  • 通常のコンストラクタのデカルト

    public function Point(x:Number = 0, y:Number = 0) 
    

    使用例:

    var point:Point = new Point(2, -.5);
    
  • 静的メソッドの極座標

    public static function polar(len:Number, angle:Number):Point
    

    使用例:

    var point:Point = Point.polar(12, .7 * Math.PI);
    

    実際のコンストラクタではないので、 newキーワードはありません。

関数の設定と取得

カプセル化を確保するために、クラスのメンバ変数をする必要がありprivateのみにアクセスできるpublic公衆経由でget / setアクセス方法。プライベートフィールドの_を付けておくのが一般的です。

public class Person
{
    private var _name:String = "";

    public function get name():String{
        return _name;
        //or return some other value depending on the inner logic of the class
    }


    public function set name(value:String):void{
        //here you may check if the new value is valid
        //or maybe dispatch some update events or whatever else
        _name = value;
    }

場合によっては、 get / setペアのprivateフィールドを作成する必要もありません。
たとえば、カスタムラジオグループのようなコントロールでは、ラジオボタンが選択されていることを知る必要がありますが、クラス外では選択した値だけをget / setする方法が必要です。

public function get selectedValue():String {
    //just the data from the element
    return _selected ? _selected.data : null;
}
public function set selectedValue(value:String):void {
    //find the element with that data
    for (var i:int = 0; i < _elems.length; i++) {
        if (_elems[i].data == value) {
            _selected = _elems[i];//set it 
            processRadio();//redraw
            return;
        }
    }
}

パッケージ

パッケージはクラスのバンドルです。すべてのクラスは、 packageステートメントを使用してpackage内で宣言する必要があります。 packageステートメントの後ろには、パッケージの名前が続きます。または、最上位パッケージにクラスを追加する場合は、何も続きません。サブパッケージは、ドット( . )区切りを使用して作成されます。 packageステートメントの後には、単一のclass定義を含むブロックが続きます 。例:

package {
    // The top level package.
}

package world {
    // A package named world.
}

package world.monsters {
    // A package named monsters within a package named world.
}

パッケージは、ソースルートを基準にしたクラスのファイル構造と相関する必要があります。 srcという名前のソースルートフォルダがあると仮定すると、上記はファイルシステムで正しく表現できます。

src
    TopLevelClass.as
    
    world
        ClassInWorldPackage.as
        AnotherClassInWorldPackage.as
        
        monsters
            Zombie.as

メソッドのオーバーライド

クラスをextendするときは、継承されたクラスがoverrideキーワードを使用して定義するメソッドをoverrideできoverride

public class Example {
    public function test():void {
        trace('It works!');
    }
}

public class AnotherExample extends Example {
    public override function test():void {
        trace('It still works!');
    }
}

例:

var example:Example = new Example();
var another:AnotherExample = new AnotherExample();

example.test(); // Output: It works!
another.test(); // Output: It still works!

superキーワードを使用すると、継承されるクラスから元のメソッドを参照できます。たとえば、 AnotherExample.test()本文を次のように変更できます。

public override function test():void {
    super.test();
    trace('Extra content.');
}

その結果:

another.test(); // Output: It works!
                //         Extra content.

クラスコンストラクタのオーバーライドは少し異なります。 overrideキーワードは省略され、継承されたコンストラクタへのアクセスは単にsuper()行われます:

public class AnotherClass extends Example {
    public function AnotherClass() {
        super(); // Call the constructor in the inherited class.
    }
}

getメソッドとsetメソッドをオーバーライドすることもできます。

ゲッターとセッター

ゲッターとセッターは、プロパティのように動作するメソッドです。それは彼らが機能構造を持っていることを意味しますが、使用されるとき、それらはプロパティとして同じように使用されます:

ゲッター関数の構造

彼らは、引数のないキーワード、関数名の前、関数名の前にgetキーワードをfunction必要があります。戻り値の型は指定されていて、値を返さなければなりません:

public function get myValue():Type{
    //anything here
    return _desiredValue;
}

構文

getterから値を取得するには、構文はプロパティから値を取得するのと同じです(parens ()は使用されません)。

trace(myValue);

セッター関数の構造

functionキーワードの後に​​キーワードをset 、関数名の前に1つの引数を設定し、値を返さないでください。

public function set myValue(value:Type):void{
    //anything here
    _desiredProperty=value;
}

構文

setterの値を設定する場合、構文は、値をプロパティに設定することと同じです(等号=と値を使用)。

myValue=desiredValue;

1つの値に対してゲッターとセッターを設定する

注:ゲッターのみを作成するか、名前付きセッターのみを作成する場合、そのプロパティーは読み取り専用またはset-onlyになります。

プロパティを読み込み可能と設定可能にするには、getterとsetterを以下のように作成する必要があります。

1.同じ名前。
2.同じ型(ゲッターの戻り値の型とセッターの入力値(引数)の型、

注意:gettersとsetterは、他のプロパティやメソッドと同じ名前を持つべきではありません。

getterとsetterの使い方:

通常のプロパティではなくgetterとsetterを使用することは、多くの賛辞を持っています:

1. 読み取り専用または設定のみのプロパティを作成する:
たとえば、表示オブジェクト内の子の数です。それは設定できません。

プライベートプロパティへのアクセス:
例:

private var _private:Type=new Type();
//note that function name "private" is not same as variable name "_private"  
public function get private():Type{
    return _private;
}

3. 値を設定した後に何らかの変更が必要な場合:
この例では、このプロパティの変更を通知する必要があります。

public static function set val:(input:Type):void{
    _desiredProperty=input;
    notifyValueChanged();
}

他の多くの用途



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow