Так что это немного сложно объяснить, я постараюсь изо всех сил, но, пожалуйста, просто несите меня.AS3: Keep MovieClip сверху
OK. Таким образом, я создаю игру, которая включает в себя дорогу, и автомобили перемещаются по ней в случайное время (каждые 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();
}
}
}
Спасибо заранее все, что вы можете сделать, чтобы помочь сохранить здания сверху или автомобили всегда на дне.
Эли
* Только упаковывают вы задавались этот вопрос, я с автомобилем промежуточных кадров в настоящее время является каждый нет, и снова (и я не работал, почему) один или два из автомобилей просто прекратить движение в течение 5 секунд, затем исчезают.
@bokan Спасибо за ваш комментарий, я в какой-то момент смотреть в него больше. Но если это единственный способ исправить мою проблему, я пока не вижу в этом большого смысла. –
Просто примечание/совет: 'addChildAt (Building, numChildren)' точно так же, как 'addChild (Building)'. addChild всегда ставит ребенка поверх всего остального – BadFeelingAboutThis
Еще один совет в AS3 - чтобы сделать код более читаемым (очень хорошая вещь, когда просили других устранить его), стандарт defacto должен иметь экземпляры/vars начинать с нижнего регистра буквы и имена классов начинаются с букв верхнего регистра. – BadFeelingAboutThis