Последнее изменение: Решено!Actionscript 3: Динамическое добавление мувиклипов, ограниченных контейнером
Ну, я не смог найти здесь полный ответ, но я, наконец, получил то, что было после. Большое спасибо за вашу помощь и терпение.
как примечание стороны: Я думаю, что, возможно, у меня были проблемы с использованием типов int и Number, при ближайшем рассмотрении моего решения я понял, что Number используется, а не int. получается число содержит плавающие точки, а int - нет. мои номера, вероятно, округляли всякий раз, когда я пытался исправить это сам. для всех, кого я знаю, ответ TDI мог бы быть замечен, и использование int для заполнения могло иметь накопленные округленные числа. О, хорошо, вы что-то узнаете каждый день.
правильный код, чтобы ограничить видеоклипы до клип контейнер фильм (или спрайт или любой другой) в моде я искал это:
var picContainer:PicContainer = new PicContainer();
picContainer.x = stage.stageWidth/2 - picContainer.width/2;
picContainer.y = stage.stageHeight/2 - picContainer.height/2;
addChild(picContainer);
var totalPics:int = 17;
var pic:Pic = new Pic(); //make an instance just to get its width
var xRange:Number = picContainer.width - pic.width;
var spacing:Number = xRange/(totalPics - 1);
//A little optimization: only need to calculate this number ONCE:
var yLoc:Number = picContainer.height/2 - pic.height/2;
for(var i:int = 0; i < totalPics; i++) {
pic = new Pic();
pic.x = i * spacing;
pic.y = yLoc;
picContainer.addChild(pic);
}
логика довольно проста, и я не знаю, почему я не мог получить это мой сам, потому что нарисовали диаграммы, которые говорят именно эту логику. однако я не должен был помещать цифры в нужные места, или мне бы не пришлось спрашивать, будет ли я; P
BONUS CONTENT! в качестве дополнительного бонуса (если кто-то найдет эту тему в поисках ответов ..) у вас также может быть фанат «pic» из центральной точки (но они все равно будут в порядке слева направо), используя этот код :
var picContainer:PicContainer = new PicContainer();
picContainer.x = stage.stageWidth/2 - picContainer.width/2;
picContainer.y = stage.stageHeight/2 - picContainer.height/2;
addChild(picContainer);
var totalPics:int = 5;
var pic:Pic = new Pic(); //make an instance just to get its width
var padding:Number = (picContainer.width - (pic.width * totalPics))/(totalPics + 1);
for(var i:int = 0; i < totalPics; i++) {
pic = new Pic();
pic.x = padding + i * (pic.width + padding);
pic.y = picContainer.height/2 - pic.height/2;
picContainer.addChild(pic);
}
Попробуйте это сделать, чтобы сделать большие док-движки для миниатюр!
Первый Редактировать: Ну, есть некоторый прогресс благодаря TDI, но не полное решение.
Вы видите, проблема остается в том, что клипы не полностью сквозите в контейнер, последний или два остаются торчащими.
example:
мой пересмотренный код выглядит следующим образом:
var newPicContainer:picContainer = new picContainer();
var newPic:pic;
var picwidth:int = 100;
var amountofpics:int = 22;
var i:int;
//add a container
addChild(newPicContainer);
//center our container
newPicContainer.x = (stage.stageWidth/2)- (newPicContainer.width/2);
newPicContainer.y = (stage.stageHeight/2)- (newPicContainer.height/2);
var totalpicwidth:int = picwidth*amountofpics;
var totalpadding:int = newPicContainer.width - totalpicwidth;
var paddingbetween:int = (totalpadding/amountofpics);
for (i = 0; i < amountofpics; ++i)
{
//make a new mc called newPic(and i's value) eg. newPic1
this['newPic' + i] = new pic();
this['newPic' + i].width = picwidth;
//add our pic to the container
newPicContainer.addChild(this['newPic' + i]);
//set the new pics X
if (i != 0)
{
// if i is not 0, set newpic(i)s x to the previous pic plus the previous pics width and add our dynamic padding
this['newPic' + i].x = this['newPic' + (i-1)].x + picwidth + paddingbetween;
}
else
{
this['newPic' + i].x = 0;
}
}
Еще раз спасибо всем, заранее!
Оригинал сообщения:
Здравствуйте, первый раз размещения здесь. Надеюсь, я не ошибаюсь. моя проблема заключается в следующем:
У меня есть довольно простой цикл, который создает «миниатюру» и помещает его рядом с предыдущим (с небольшим отступом) внутри содержащего фрагмента ролика.
var newPicContainer:picContainer = new picContainer();
var newPic:pic;
var amount:int = 9;
var i:int;
//Add our container
addChild(newPicContainer);
//center our container
newPicContainer.x = (stage.stageWidth/2)- (newPicContainer.width/2);
newPicContainer.y = (stage.stageHeight/2)- (newPicContainer.height/2);
for (i = 0; i < amount; ++i)
{
newPic = new pic();
newPicContainer.addChild(newPic);
//just so i know it's adding them..
trace(newPic.thisOne);
newPic.thisOne = i;
// set this one to its self (+5 for padding..) Times, the amount already placed.
newPic.x = (newPic.width+5) *i;
}
мне интересно, если есть уравнение или «волшебная математика», что я могу использовать, чтобы выяснить, что длина контейнера и есть «эскизы» добавить относительно этого числа. в основном раздавливая миниатюры друг против друга, чтобы они все вписывались внутрь.
что-то вдоль линий:
newPic.x = (newPic.width *i) - stuff here to make it know not to go past the containing width;
Я должен признать, я не слишком большой с математикой и поэтому эта часть кодирования ускользает меня ..
благодаря любым берущих заранее ..
Привет, большое спасибо за ваш вклад! Я видел, что вы там сделали, и по большей части это блестяще! Тем не менее, мне нужен был хороший час, чтобы разгадать логику, поскольку вы использовали некоторые методы кодирования, которые я раньше не видел (это утверждение было похоже на «Wha ..?»). Во всяком случае, проблема остается с этим подходом, так как даже при том, что он сжимает клипы в хорошем состоянии, они не полностью сквозируют в контейнер и немного отрубают с правой стороны. У вас (или кто-либо еще) есть идея о том, как это исправить? Я отредактировал свой основной пост, чтобы отразить мой новый код. Спасибо =) – Partack
Мне пришлось отредактировать свой ответ, так как я писал «длину», где он должен был быть «шириной» относительно свойства экранных объектов. свойства длины для массивов. – TheDarkIn1978
Ohhhh ... Так что это расстояние между длиной и шириной.Я думал, что это было неправильно, xD, спасибо за вашу помощь в этом, хотя ваш ответ не совсем дал мне то, что я искал, это помогло мне понять, как я должен был думать о том, какие цифры нужно проверять чтобы получить ответы. как мое редактирование подсказывает вверх, я нашел решение, и это очень близко к тому, что вы делали, поэтому очень большое спасибо за ваше время и терпение, чтобы ответить на мой вопрос =) – Partack