Просмотр полной версии : attachMoviClip + путь к вложеному загрузчику
lestat_2m
15.08.2007, 03:29
Есть задача:исходя из количества картинок в папке поместить на сцену соответствующее количество кнопок с превьюхами, по нажатияю каждой из которых изображение будет загружатся в полный размер.Так как количество картинок не известно информацию о них беру из xml файла( в котором пары данных картинка - путь к ней)
Допустим в файле у меня 10 элементов,соответсвенно я в цикле аттачу 10 экземпляров клипа в котором загрузчик, смещая каждый относительно предыдущего.
Для каждого вложенного лоадера нужно прописать путь
var x_c:Number = 0;
var y_c:Number = 0;
var mclip:String = "mc";
for (var i:Number = 1; i<10; i++) {
mclip = mclip+i;
this.attachMovie("mc", mclip, this.getNextHighestDepth(), {_x:x_c, _y:y_c});
this[mclip].ldr.contentPath="pictures/shirts/1/1.jpg"
x_coord=x_coord+51
if(x_coord==204){
y_coord=y_coord+50
x_coord=0
}
}
проблема в том что путь не прописывается. Есть подозрение что имя экземпляра лоадера в приаттаченых клипах неопределено, тогда подскажите как его задать?Или я неверно к нему обращаюсь?
Есть подозрение, что getNextHighestDepth() показывает запредельную высоту, ведь вы используете компонент.
или использовать DepthManager или проставлять ручками, что несложно.
lestat_2m
15.08.2007, 03:42
не совсем понял (вернее не понял совсем), если не трудно, можно поподробнее?
Подробнее - в хелпе
if you place a version 2 component either on the Stage or in the Library, the getNextHighestDepth() method can sometimes return depth 1048676, which is outside the valid range. If you are using version 2 components, you should always use the version 2 components DepthManager class.
В переводе - задавайте глубину руками.
Правда, смотря что у вас this. Проверить, в этом ли дело, несложно:
trace(this.getNextHighestDepth());
lestat_2m
15.08.2007, 04:19
действительно, именно так и обстоят дела. Спасибо за помощь
lestat_2m
15.08.2007, 14:13
прописал глубины в ручную, но это не дало эффекта
Может есть ещё какие-то подводные камни?
Рассмотрим этот кусок
this.attachMovie("mc", mclip, this.getNextHighestDepth(), {_x:x_c, _y:y_c});
this[mclip].ldr.contentPath="pictures/shirts/1/1.jpg"
В первой строчке создали мувилип this.mclip. Потом пытаетесь сохранить путь в this[mclip].ldr.contentPath. Вопросы:
1. Откуда взялся ldr? Он уже есть внутри клипа в библиотеке?
2. Почему пишите this[mclip], а не this.mclip?
Molecula
15.08.2007, 14:59
Кстати у меня тоже не пашет.
Вчера делал, но не получилось - подумал, поздно моск не пашет.
Кладу на сцену Лоадер, имя его - ldr, конвертирую его в мувик box
Пишу:
ldr.contentPath='1.swf'
ldr2.contentPath='1.swf'
box.ldr.contentPath='1.swf'
_dupli = box.duplicateMovieClip("clip",1, {_x:200,_y:200});
_dupli.ldr.contentPath='1.swf'
trace(_dupli.ldr.contentPath)
trace(_dupli.ldr._x)
trace(_dupli.ldr.getNextHighestDepth())
Трейсы показывают:
1.swf
0
0
Везде подгружает, кроме продублированного.
Что не так?
lestat_2m
15.08.2007, 15:21
Вопросы:
1. Откуда взялся ldr? Он уже есть внутри клипа в библиотеке?
2. Почему пишите this[mclip], а не this.mclip?
да, ldr находится внутри клипа из библиотеки
пишу this[mclip] потому что mclip - переменная
Molecula
15.08.2007, 15:24
Наверное, всё таки прикол с глубиной.
А вообще, нафиг эти компоненты...
2 lestat_2m,
можно и так
atata = this.attachMovie("mc", mclip.....
atata._x=....
atata._alpha=....
Кстати, из твоего кода (самый топ), выходит что они все один на другой ложатся - может тут глюк?
lestat_2m
15.08.2007, 15:31
Кстати, из твоего кода (самый топ), выходит что они все один на другой ложатся - может тут глюк?
это я вчера тупанул слегка , должно быть так:
for (var i:Number = 1; i<10; i++) {
var mcl=this.attachMovie("mc", mclip+i, z++, {_x:x_coord, _y:y_coord});
_root.mcl.ldr.contentPath="pictures/shirts/1/1.jpg";
x_coord=x_coord+51
if(x_coord==204){
y_coord=y_coord+50
x_coord=0
}
}
и экземпляры ложатся ровными рядами, но проблема не в этом
lestat_2m
15.08.2007, 21:51
всё, разобрался:) вероятно я пошёл немного в обход, может не совсем правильно (я с AS знаком от силы месяц), но всё работает =)
основной код
var x_coord:Number = 0;
var y_coord:Number = 0;
var mclip:String = "mc";
var z:Number = 100;
for (var i:Number = 1; i<10; i++) {
naming = "pictures/shirts/1/"+Math.ceil(Math.random()*10)+".jpg";
trace(naming);
var mcl = _root.attachMovie("mc", mclip+i, z++, {_x:x_coord, _y:y_coord});
mcl.naming=naming
x_coord = x_coord+51;
if (x_coord == 204) {
y_coord = y_coord+50;
x_coord = 0;
}
}
а в клипе
ldr.contentPath=naming
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.