2011-10-21 5 views
0

プレーヤーコントロールボール(mcBall)と複数の壁(適切にmcWall1、mcWall2など)の衝突をチェックするために、 。):私はこれを行うとき(VARのnumberofwallsは、ムービークリップの異なる数があり、それぞれ異なるフレームに独自の値を取得します)AS3:多くのムービークリップを含む/ doループを使用すると暗黙強制変換エラーが発生する

function checkcollision(evt:Event) : void { 
     for(var i = 1; i <= numberofwalls; i++){ 
      if (mcBall.hitTestObject("mcWall"+i) == true){ 
      killball() 
      } 
     } 
    } 
} 

はしかし、私は、コンパイル時に次のエラーを取得する:

シーン1、レイヤー 'アクション'、フレーム1、行89 1067:型Stringの値を無関係な型に暗黙的に変換します。flash.display:DisplayObject。

ライン89はこれです:

if (mcBall.hitTestObject("mcWall"+i) == true){ 

私の理解では、文字列とint型を追加しようとしているが、それはただの最後に整数を追加していない理由を私は見ていないということです文字列(例:mcWall1、i = 1)。

私は配列を設定していないので、私は使用する壁の量が必要ではないと思うので使用できません( "mcWall" [i])。各壁に静的にインスタンス名が与えられます私のコードではなく、ステージ上で。

私はmcWall(i)のテスト方法を教えてください。

事前に乾杯。

答えて

0

コンパイラが言うことは本当です。 hiTestObject()関数は引数としてDisplayObjectを取得しますが、文字列"mcWall"+iを渡しています。試してみてください:

if (mcBall.hitTestObject(this.getChildByName("mcWall"+i)) == true){ 
    killBall(); 
} 
+0

素晴らしい、迅速かつ正確です。すぐに私の問題を解決しました。ありがとうございました :) – hazdog

関連する問題