【发布时间】:2013-04-05 17:50:41
【问题描述】:
嘿伙计们有一点麻烦,这可能比我想象的要容易。 但是我遇到的问题是,当我用我的 mcPlayer 测试我的 mcPoints 时,它只与通过 for 循环添加到舞台的 5 个电影剪辑中的 4 个进行交互。
过去两天我一直在努力解决这个问题,似乎无法确定问题所在,一切似乎都设置得很完美,但也许你可以提供帮助。
这些是我的变量:
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 以启动的循环:
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”似乎没有被交互,任何想法为什么?请任何有用的东西。非常感谢!
【问题讨论】:
标签: arrays actionscript-3 for-loop hittest