私は配列で新しいことを試みており、いくつかの問題を抱えています。1 つのクラスの複数のインスタンスを作成し、それらを配列に入れようとしています。
私は次のようにインスタンスを作成しています:
public function creatingitem(e:TimerEvent)
{
amtcreated = Math.ceil(Math.random() * 4);
while (amtcreated >= 1)
{
amtcreated--;
var i:Number = Math.ceil(Math.random() * 3);
switch (i)
{
case 1 :
//Object1
objectnum = 1;
objectwei = 3;
r = new Board(objectnum,objectwei,stagw,stagh);
addChild(r);
fallingitem.push(r);
break;
case 2 :
//Object2
objectnum = 2;
objectwei = 4;
c = new Board(objectnum,objectwei,stagw,stagh);
addChild(c);
fallingitem.push(c);
break;
case 3 :
//Object3
objectnum = 3;
objectwei = 4;
l = new Board(objectnum,objectwei,stagw,stagh);
addChild(l);
fallingitem.push(l);
break;
default :
break;
}
}
}
これらが作成されると、メイン ボールと衝突するかどうかがチェックされます。
public function hitcheck(e:Event)
{
for (var v:int = fallingitem.length - 1; v >= 0; v--)
{
if (ball.hitTestObject(fallingitem[v]))
{
trace(fallingitem[v]);
if (fallingitem[v] == r)
{
bonusscore += 100;
fallingitem[v].removeitem();
}
else if (fallingitem[v] == c)
{
bonusscore += 75;
fallingitem[v].removeitem();
}
else if (fallingitem[v] == l)
{
bonusscore += 75;
fallingitem[v].removeitem();
}
trace(bonusscore);
}
}
}
問題は、トレース機能が原因ですべてのアイテムがヒットしていることです。すべてのインスタンスが if 条件を満たしているわけではありません。例として、2 つの "r" インスタンスを持つことができ、両方をヒットすると、1 つが通過してスコアに追加され、もう 1 つが通過し続けます。hitTestObject の直後のトレースは、両方がヒットして登録されていることを示していますが、スコアが追加されない理由はわかりません。
ありがとうございました、