少し問題を抱えている皆さん、これは私が思っているよりも簡単かもしれません。しかし、私が抱えている問題は、mcPlayer で mcPoints をヒットテストすると、for ループによってステージに追加されたムービー クリップの 5 つのうち 4 つとしかやり取りしないことです。
私は過去 2 日間これに苦労しており、問題を特定することはできません。すべてが完全にセットアップされているようですが、おそらくあなたが助けることができます.
これらは私の変数です:
public var mcPoints:smallGainPoints;
private var nPoints:Number = 5;
private var aPointsArray:Array;
ステージに追加する 5 つの mcPoints ムービー クリップを設定する方法は次のとおりです。
private function addPointsToStage():void
{
var startPoint:Point = new Point((stage.stageWidth / 2) - 100, stage.stageHeight / 2);
var spacing:Number = 50;
for (var i = 0; i < nPoints; i++)
{
trace(aPointsArray.length);
mcPoints = new smallGainPoints();
aPointsArray.push(mcPoints);
stage.addChild(mcPoints);
mcPoints.x = startPoint.x + (spacing * i);
mcPoints.y = startPoint.y;
}
}
これで、水平方向に整列された 5 つのポイントのムービー クリップがステージに追加されます。
最後に、HitTestObject が Initiate するのをリッスンするループを次に示します。
private function checkPlayerHitPoints():void
{
for (var i:int = 0; i < aPointsArray.length; i++)
{
//get current point in i loop
var currentPoints:smallGainPoints = aPointsArray[i];
//test if player is hitting current point
if(player.hitTestObject(currentPoints))
{
//Add points sound effects
var pointsSound:Sound = new pointsPickUpSound();
pointsSound.play();
//remove point on stage
currentPoints.destroyPoints()
//remove points from array
aPointsArray.splice(i, 1);
trace(aPointsArray.length);
//Add plus 5 text to current points position
mcPlus5 = new plusFiveText();
stage.addChild(mcPlus5);
mcPlus5.x = (currentPoints.x);
mcPlus5.y = (currentPoints.y);
//Update high score text
nScore += 5;
updateHighScore();
}
}
}
したがって、ムービー クリップが追加されたときと、ここでヒットしたときの両方のトレースを追加したのは、次の値です。
0 1 2 3 4 ヒット: 4 ヒット: 3 ヒット: 2 ヒット: 1
また、addPointsToStage(); を呼び出します。詳細については、私のコンストラクターで。
したがって、取得している値から、最後の値「0」が相互作用していないように見えますが、その理由は何ですか? 何でもいいのでお願いします。本当にありがとう!