0

プレイヤーが制御するボール(mcBall)といくつかの壁(適切な名前はmcWall1、mcWall2など)の間の衝突をチェックするために、次の関数を常に実行しています:( var numberofwallsは、そこにある異なるフレームごとに独自の値を取得しますムービークリップの数が異なります。)

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)をテストする方法について何か提案はありますか?

よろしくお願いします。

4

1 に答える 1

0

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

if (mcBall.hitTestObject(this.getChildByName("mcWall"+i)) == true){
    killBall();
}
于 2011-10-21T10:04:41.030 に答える