我将MovieClip
导出到名为smallGainPoints
的ActionScript。我想要做的是在舞台上以线性或对角线路径创建此MovieClip
的多个实例。完成此操作后,我希望在Points数组和播放器之间发生hitTestObject
。积分被添加到我希望它们的阶段,但HitTest不会启动。
以下是我如何设置功能:
此函数添加在我的Gameloop中,该函数从onEnterFrame处理程序调用:
private function checkPlayerHitPoints():void
{
for (var j:int = 0; j < aPointsArray.length; j++)
{
//get current points in j loop
var currentPoints:smallGainPoints = aPointsArray[j];
//test if player is hitting current point
if (player.hitTestObject(currentPoints))
{
//remove point on stage
currentPoints.destroyPoints()
//remove point from array
aPointsArray.splice(j, 1);
nScore += 5;
updateHighScore();
}
}
}
我不确定我是否做得对,但我想在一行中添加点的多个实例,以便玩家可以收集尽可能多的积分。所以我创建了一个函数并设置了位置,然后在我的构造函数中添加了函数addPointsToStage()
,因此它不会循环每一帧。
private function addPointsToStage():void
{
for (var i = 0; i < nPoints; i++)
{
points = new smallGainPoints();
stage.addChild(points);
points.x = (stage.stageWidth / 2);
points.y = (stage.stageHeight / 2);
points = new smallGainPoints();
stage.addChild(points);
points.x = (stage.stageWidth / 2) + 200;
points.y = (stage.stageHeight / 2);
}
这是我启动数组的方式:
public var points:smallGainPoints;
private var nPoints:Number = 5;
private var aPointsArray:Array;
然后在我的构造函数中添加了:
aPointsArray = new Array();
所以积分被添加到舞台上但是最热门的不起作用。请帮忙!
答案 0 :(得分:1)
在addPointsToStage
方法中,您永远不会将smallGainPoints
对象添加到数组中。
这一行之后:
points = new smallGainPoints();
将新点对象推送到aPointsArray
数组:
aPointsArray.push(points);
修改强>
连续添加积分的更好方法可能是这样的:
private function addPointsToStage():void
{
var startPoint:Point = new Point(stage.stageWidth / 2, stage.stageHeight / 2);
var spacing:Number = 50;
for (var i = 0; i < nPoints; i++)
{
points = new smallGainPoints();
aPointsArray.push(points);
addChild(points);
points.x = startPoint.x + (spacing * i);
points.y = startPoint.y;
}
}
此for loop
会从屏幕中心开始向右添加一堆smallGainPoint
个对象。