这个有些难以解释,我会尽力,但请耐心等待。
好的。我正在创建一款游戏,其中包括一条道路和汽车在上面随机移动(每5秒左右)。
我使用下面的代码来创建汽车及其行驶方向,并在完成屏幕横跨动画后将其移除。
public function animateCars()
{
CarMC = Random_Car();
if (CarLeft)
{
CarMC.x = 0;
CarMC.y = 245;
CarMC.name = "CarNumber_"+CarNumber;
addChildAt(CarMC,numChildren - 1);
MoveCar = new Tween(CarMC,"x",None.easeNone,-60,900,12,true);
MoveCar.addEventListener(TweenEvent.MOTION_FINISH, CarFinished);
MoveCar.start();
}
else
{
CarMC.x = 0;
CarMC.y = 258;
CarMC.name = "CarNumber_"+CarNumber;
CarMC.scaleX *= -1;
addChildAt(CarMC,numChildren - 1);
MoveCar = new Tween(CarMC,"x",None.easeNone,800,-260,12,true);
MoveCar.addEventListener(TweenEvent.MOTION_FINISH, CarFinished);
MoveCar.start();
}
CarNumber++;
}
// Loads another car when finished
function CarFinished(e:TweenEvent):void
{
removeChild(getChildByName("CarNumber_"+CarNumberR));
CarNumberR++;
}
这一切都很完美地运作着,(嗯,有点问题,但这不是当前的问题)*。
在这个游戏中,你也可以拾取和放置物品。使用以下代码:
function addBuilding(Text:String)
{
HoldingBuilding = true;
CursorPointer.visible = false;
CursorGrab.visible = true;
Building = new CarWash();
Building.x = MouseX - MouseX % size;
Building.y = MouseY - MouseY % size2;
Building.rotation = 0;
addChildAt(Building,numChildren);
}
当您将建筑物悬停在汽车上方时,汽车会保持在其下方,这一点很好。
当您将汽车放置得离道路太近时,问题就出现了。对于第一座建筑物而言,它的运作还不错,但是如果您添加第二座建筑物,汽车将会在最新的建筑物下面,并且在最旧的建筑物上面。
我无法解决如何让已放置的建筑物始终处于顶部或者让汽车处于底部
这是放置代码:
function DropBuilding(e:MouseEvent):void
{
if (HoldingBuilding)
{
if (BuildingPlacement)
{
HoldingBuilding = false;
BuildingPlacement = false;
CursorPointer.visible = true;
CursorGrab.visible = false;
Building.x = MouseX - MouseX % size;
Building.y = MouseY - MouseY % size2;
Building.rotation = 0;
Building.transform.colorTransform = NoColour;
Building.removeChild(BuildingBase);
BuildingBase = new Sprite();
BuildingShaddow = new Sprite();
ShakeTimer.stop();
}
else
{
ShakeTimer.start();
}
}
}
提前感谢您为保持建筑物在顶部或汽车始终在底部所做的任何帮助。
Eli
*如果您想知道,我目前遇到的汽车缓动问题是每隔一段时间(我还没有弄清原因),其中一两辆汽车会停止移动5秒钟,然后消失。
addChildAt(Building, numChildren)
和addChild(Building)
完全相同。addChild
总是将子项放置在最上面。 - BadFeelingAboutThis