嘿大家好,我已经在这一段时间了,我正试图找出解决这个问题的最佳方法。所以我有一组名为outerPlanets
的影片剪辑对象,它们被添加到一个名为aPlanetArray
的数组中,这样阵列中的这些行星就会被添加到舞台上,并且它们之间的间距都是全部。当玩家触摸屏幕时,角色在另一个行星上跳跃,行星在+ y轴上向下滚动以保持角色位于中心位置。如何将影片剪辑添加到数组?
我给舞台增加了10个行星,因为性能问题我不想增加很多并且失去FPS,所以我的想法是阵列变得很低时,比如行星阵列是< = 5然后添加更多的行星到最后一颗行星的最高位置。希望我有道理。把它看作是一堆一块一块倒下的块,随着越来越多的块落下,所以它永远不会结束。
这是我如何将它们添加到舞台:
//Instantiate Arrays
aPlanetArray = new Array();
//Numbers
xSpacing = 100;
ySpacing = 200;
startPoint = new Point((stage.stageWidth/2), (stage.stageHeight/2));
addOuterPlanets();
private function addOuterPlanets():void
{
for (var i:int = 0; i < nPlanets; i++)
{
outerPlanets = new mcOuterPlanets();
outerPlanets.x = startPoint.x + (xSpacing * i);
outerPlanets.y = startPoint.y - (ySpacing * i);
stage.addChild(outerPlanets);
aPlanetArray.push(outerPlanets);
}
}
我当时可以想出的唯一事情是这样的:
if (aPlanetArray.length <= 5)
{
addOuterPlanets();
}
这增加了一组新的行星,但当然只是将它们添加到舞台的中心,而不是其他行星的顶部。任何想法如何做到这一点?
进展情况:
private function collisionPlanetHandler():void
{
for (var i:int = 0; i < aPlanetArray.length; i++)
{
var currentPlanet:mcOuterPlanets = aPlanetArray[i];
planetContainer.addChild(aPlanetArray[i]);
if (character.hitTestObject(currentPlanet) && !nextlevel)
{
trace("HIT");
yDown = (stage.stageHeight/2) - (currentPlanet.y - 200); //have object tween to center of stage or where was last positioned
//tap back to false
tap = false;
nextlevel = true;
if (!bNullObject) // have null object so doesnt loop again and cause error for planet == null
{
planet.destroy();
planet = null;
}
bNullObject = true;
planetHit = currentPlanet; // to land on correct planet
aPlanetArray.splice(i, 1);
randomRotation = randomNumber(1, 2); //Stop in random rotation for next planet
TweenLite.to(planetContainer, 2.0, { y:yDown, ease:Elastic.easeOut });
planetIncrement -= 300;
addPlanet(randomNumber((stage.stageWidth/2) - 220, ((stage.stageWidth/2)) + 220), planetIncrement);
}
}
}
尝试:aPlanetArray.insertAt(aPlanetArray.length - 1,影片剪辑); – kare
为什么不把移动到屏幕底部的行星移动到顶部。就像if(planet.y> stage.stageHeight){planet.y = -20; planet.x = random;}因为即使你一次只添加10个,如果有人玩你的游戏40分钟,该怎么办?屏幕上会计算出一吨行星。这可能导致减速。您应该重新使用它们或将其删除 –