0

誰かがas演算子の良い説明を持っていますか?

一方で、新しいオブジェクトをインスタンス化する代わりにasを使用する方が良い場合が多いように思えます。

しかし、このオペレーターが私を失望させる状況があります。たとえば、URLLoaderを介して XML 形式のテキスト ファイルをロードする場合:

private function completeHandler(event:Event):void {
    var loader:URLLoader = URLLoader(event.target);
    trace("completeHandler: " + loader.data);

    var x:XML = new XML(loader.data);
    trace("x=" + x);
}

ここでコンストラクターを使用する必要があるのはなぜですか? var x:XML = loader.data as XML;と言えないのはなぜですか。メモリを節約しますか?

洞察をありがとう!アレックス

4

1 に答える 1

4

as変数の型が別のクラスのスーパー クラスまたはサブクラスであるかどうかを評価します。新しいオブジェクトは作成されません。iswhileisがブール値を返すこととの違いasは、目的の型のオブジェクト、または のいずれかを返すことnullです。型キャストに使用されます。

ActionScript のドキュメントを参照してください。

典型的な使用例は、インスタンス名で取得されるステージで MovieClip を使用することです。

// This will not compile:
var d:DisplayObject = stage.getChildByName ("instance1"); 
d.gotoAndPlay (2);

// This will play the MovieClip from frame 2
var m : MovieClip = stage.getChildByName ("instance1") as MovieClip;
m.gotoAndPlay (2); 

stage.getChildByName()実際に MovieClip、Sprite、Button などであるかどうかに関係なく、常に DisplayObject を返します。そのため、MovieClip クラスのメソッドを使用する場合は、最初に MovieClip にキャストする必要があります。ただし、これは新しいムービークリップを作成するのではなく、正しいタイプを使用していることを確認するだけです。

于 2011-02-21T11:17:51.103 に答える