嘿伙计们所以基本上我要做的就是当我的玩家与数组中的所有5个点MovieClips发生碰撞而目标电影剪辑我希望文本显示为“完美。但我无法完成这个我设置了这个功能,看起来似乎可以,但我认为可能出错的是带有阵列中所有Movie剪辑的hitTest。
以下是我如何设置它:
这是我的循环函数:
private function gameLoop(e:Event):void
{
perfectTextFunction();
}
这是功能:
private function perfectTextFunction():void
{
if (player.hitTestObject(mcGoal_1 && points))
{
trace("perfect Text");
mcPerfect = new perfectText();
mcPerfect.x = (stage.stageWidth / 2);
mcPerfect.y = (stage.stageHeight/ 2);
stage.addChild(mcPerfect);
}
}
Trace没有选择任何东西。
如果需要,以下是如何将积分添加到舞台:
public function addPointsToStage():void
{
for (var i = 0; i < nPoints; i++)
{
trace(aPointsArray.length);
points = new mcGainPoints();
stage.addChild(points);
points.x = startPoint.x + (xSpacing * i);
points.y = startPoint.y - (ySpacing * i);
aPointsArray.push(points);
}
}
请任何帮助将不胜感激!谢谢你!
VESPER这就是我制作NESTED LOOP的方式:
//If all points are hit then Perfect Hit Text
if (player.hitTestObject(mcGoal_1 || mcGoal_2))
{
var weHitAll:Boolean = true;
for (var s in aPointsArray)
{
weHitAll = weHitAll && player.hitTestObject(aPointsArray[s]);
if (!weHitAll)
break;
}
if (weHitAll)
{
trace("perfect Hit");
mcPerfect = new perfectText();
mcPerfect.x = (stage.stageWidth / 2);
mcPerfect.y = (stage.stageHeight/ 2) - 80;
stage.addChild(mcPerfect);
nScore += 25;
updateHighScore();
}
}
答案 0 :(得分:1)
var weHitAll:Boolean=true;
for (var s in aPointsArray) {
weHitAll = weHitAll&&player.hitTestObject(aPointsArray[s]);
if (!weHitAll) break; // missed one, drop cycle
}
if (weHitAll) {
trace('Perfect hit!');
... // etc
}
函数hitTestObject
只接受一个对象作为参数,以便检查需要迭代的数组,一次检查一个对象(这里是aPointsArray[s]
)。 / p>