Просмотр полной версии : Выравнивание mc относительно друг друга
Добрый день!
Появился вопрос, на который нигде не могу найти ответа... Как выровнять относительно друг друга несколько мувиклипов?
Необходимо силами кода.
То есть взять из библиотеки 4 mc, положить их на сцену, выровнять по центру сцены, а потом сказать, чтобы отступы между ними были, скажем, 20 пикселей.
Вариант сложить все 4 mc в один большой мувиклип и через Align тыркнуть в нем на 4 мелких mc не катит, нужно именно отдельно =(
Буду благодарен за любую помощь в деле!
Maxi_Hunter
04.11.2010, 22:39
То есть взять из библиотеки 4 mc, положить их на сцену
var myMC:myMC_form_lib = new myMC_form_lib();
stage.addChild(myMC);
выровнять по центру сцены
myMC.x = stage.stageWidth/2-this.width/2;
отступы между ними были, скажем, 20 пикселей
myMC2.y = myMC1.y+myMC1.height+20;
как-то так.
Добавлено через 1 минуту
Да, забыл добавить, что это все законно, при условии что центр каждого мувика в верхнем левом углу. Я это ввел за правило и уже не задумываюсь об этом)
Благодарю, это уже практически то, что нужно.
Единственный момент - после
myMC2.y = myMC1.y+myMC1.height+20;
теперь, когда на сцене два mc, мне нужно их обоих выровнять по центру.
В общем, пришлось немного помучиться, написать бог весть что, но получилось:
var mc1:Mc1 = new Mc1;
var mc2:Mc2 = new Mc2;
var mc3:Mc3 = new Mc3;
mc1.y = - (mc1.width + 20 + mc2.width + 20 + mc2.width) / 2;
var mc1Position = - (mc1.width + 20 + mc2.width + 20 + mc2.width) / 2;
mc2.y = mc1Position + mc1.width + 20;
var mc2Position = mc1Position + mc1.width + 20;
mc3.y = mc2Position + mc2.width + 20;
P.s. забыл сказать, mc1Position у меня записан с минусом, потому что отсчет ведется от середины сцены.
Итак, что мы получили, mc1 создается левее центра сцены, на 20 пх правее создается mc2, еще на 20 правее - mc3. Они втроем выровнены по ширине сцены.
Я просто надеялся, что можно избежать как-то этих танцев с бубном и сделать проще. С моими ограниченными знаниям AS3 приходится воротить такой вот огород
Maxi_Hunter
05.11.2010, 14:41
Ну это не танцы с бубном, а самое простое решения данной задачи)
Более грамотный подход - написать функцию, которой передавать как параметры объекты, их смещения и выравнивания.
Партизан
05.11.2010, 15:00
private function hAlign(mcArray:Array, hSpace:int = 20):void {
var widthSum:int = 0
for each (var i:MovieClip in mcArray){
widthSum += i.width
}
var wspace:int = widthSum + hSpace * (mcArray.length - 1);
var posX:int = (stage.stageWidth - wspace) / 2;
for (var j:int = 0; j < mcArray.length; j++){
var mc:MovieClip = mcArray[j] as MovieClip;
mc.x = posX
posX = posX + mc.width + hSpace;
}
}
Массив мувиков передайте в функцию
О, а вот это уже отлично!
Когда 2-3 объекта, еще не так страшно, а если их будет с десяток, то массивом на порядок проще!
Спасибо большое, буду осознавать теперь =)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.