2012-02-10 7 views
0

私は2つの映画クリップが同じ種類であるかどうかをチェックしようとしています。2つのMovieClipが同じであることを確認しますか?

私は、辞書に格納されたMovieClipsのコレクションを持っています。次に、エントリを繰り返し、各MovieClipを関数に渡されたMovieClipと比較します。問題は、動作しないということです。どちらもありません(==)。

アイデア?

乾杯。

public function hideAllPagesExcept(activatedPage:MovieClip):void { 
     for(var key:String in _navItems) { 
      var mc:MovieClip = MovieClip(_navItems[key]); 
      if(mc is activatedPage) { 
       trace("Same"); 
      } 
     } 
    } 

答えて

2

これが機能しない場合、渡しているMovieClipはあなたの考えではありません。

public function hideAllPagesExcept(activatedPage:MovieClip):void { 
    for each (var mc:MovieClip in _navItems) { 
     if(mc == activatedPage) { 
      trace("Same"); 
     } 
    } 
} 
+0

あなたが正しいです、私が過ぎていたパラメータでタイプミスをしました;)ありがとう。 – Nick

0

問題は、辞書のキーを使用する方法です。同等性をチェックするのに==を使用すると問題ありません。 mc is activatedPageの行は間違っていますが、mc is MovieClipのようにオブジェクトのタイプを確認するのにis演算子が使用されています。

あなたは辞書のキーが文字列であると仮定していますが、これは必ずしも真実ではありません。辞書のポイントは、任意のオブジェクトをキーとして使用できることです。文字列ベースのキーだけが必要な場合は、Objectを使用します。

for(var key:String in _navItems)を使用することにより、キーが存在しないconvertion後[object Object]_navItems["[object Object]"]のように見えるかもしれないので、mcnullであることにつながる、文字列にキーを変換しています。

for(var key:Object in _navItems)を使用するか、The_asManのようにの各ループにを使用してください。キーの代わりに各キーの値を繰り返し処理します。

関連する問題