一連の複製されたムービークリップが配列に格納されているため、いずれかのショットが敵のMC。ただし、Flashでは、ムービークリップのプロパティやメソッドにアクセスすることはできません。AS2-私のムービークリップは配列に格納されていますが、プロパティやメソッドにはアクセスできません。
function checkHits(){//checks for hits between enemies and bullets
for (var zz = 0; zz < bulletArray.length; zz += 1)//checks for each bullet
{
for(var yy=0;yy<enemiesArray.length;yy+=1){//checks for each enemy
trace("enemies loc"+yy+":"+enemiesArray[yy]);
trace("bullet loc"+zz+":"+bulletArray[zz]);
if(bulletArray[zz].hitTest(enemiesArray[yy])){
trace("HIT!");
removeMovieClip(bulletArray[zz]);
removeMovieClip(enemiesArray[yy]);
bulletArray.splice(zz,1);
enemiesArray.splice(yy,1);
}//end if
}//end for
}//end for
これはこれまでのフレームで実行され、anythignがヒットしているかどうかを確認するコードです。 hitTestは登録されませんが、hitTestオブジェクトを変更した場合、removeMovieClipは機能します。オブジェクトを正常に参照できますが、どのプロパティにもアクセスすることはできません。私が試してみると、彼らはいつも未定義になる。
参考のため、ここでは弾丸生成のコードを示します。これらの関数は両方ともルートレベルの関数であることに注意してください。
function dupeCircle()
{
//trace("Dupe circle initiated");
duplicateMovieClip(circlebase, "circle" + circleCount, circleCount);
bulletArray.push("circle" + circleCount);
trace(bulletArray[0]._width);
circleCount += 1;
}
私はあなたの質問に言い換えると、助けを求める必要があると思います。私が理解しているように、あなたは問題のコードを共有しておらず、 "そのプロパティやメソッドにアクセス"しています - "hitTestオブジェクトを変更した場合、removeMovieClipは機能します" - 質問? –
たとえば、trace(bulletArray [0] ._ width)は "undefined"を返しますが、removeMovieClip(bulletArray [0])はステージからオブジェクトを削除します。そして、私がhitTestオブジェクトを変更すると言うと、オブジェクトのインスタンス名である "circle0"と "wiggler0"を単に配列から取り除くのではなく変更すると、 – Nick
bulletArray.push( " circle "+ circleCount)は、MovieClipの参照を追加するのではなく、" circle1 "のような文字列を配列に追加しますか? duplicateMovieClip()は、AS2を正しく覚えていれば、作成したMovieClipへの参照を返します。そのため、ローカル変数に格納して、配列に追加することができます。 –