PDA

Просмотр полной версии : загрузка в контейнер по пути из xml-файла


mozi
08.05.2007, 17:35
1. создаю копию ролика (внутри него есть контейнер)
2. читаю данные (путь к картинке) из xml-файла
3. изменяю contentPath контейнера в только что созданном ролике

Все работает, НО! только если между 2 и 3 есть несколько кадров , то есть некоторое количество времени должно пройти после кода:

this.createEmptyMovieClip("gallery_item_"+i, i);
var b = this["gallery_item_"+i];
b.attachMovie("gallery_item", "gallery_item", 1);

Пауза, необходимая для корректной работы тем больше чем меньше скорость скачивания. По крайней мере такое происходит при SimulateDownloading.

че делать? хотя бы как вызывать 3 сразу же как только это возможно?

mozi
09.05.2007, 13:07
ну хоть кто нить знает?

screamge
09.05.2007, 13:10
а проверять на onLoad xml не пробовали?

mozi
09.05.2007, 13:24
естественно все это просходит толко после onLoad

iNils
09.05.2007, 13:58
естественно все это просходит толко после onLoadЛично я этого не вижу.

mozi
09.05.2007, 18:02
Вот весь код относящийся к проблеме:

XML_path = "gallery.xml";
gallery_xml = new XML();
gallery_xml.ignoreWhite = true;
gallery_xml.onLoad = function(ok) {
if (ok) {
read_xml();
}
};

gallery_xml.load(XML_path);

read_xml = function() {
len = gallery_xml.childNodes[0].childNodes.length;
for (var i = 0; i<len; i++) {
_root['new'+i] = new Object();
hit = _root['new'+i];
hit.my_path = gallery_xml.childNodes[0].childNodes[i].attributes.small_pic;
hit.my_path2 = gallery_xml.childNodes[0].childNodes[i].attributes.big_pic;
hit.my_link = gallery_xml.childNodes[0].childNodes[i].attributes.link;
hit.my_podpis = gallery_xml.childNodes[0].childNodes[i].attributes.podpis;
trace(hit.my_path);
}
generate_gallery();
}

function generate_gallery() {
start_x=int(gallery_small_pic_coord._x + gallery_small_pic_coord._width/2);
start_y=int(gallery_small_pic_coord._y + gallery_small_pic_coord._height/2);
cur_x=start_x;
cur_y=start_y;
sep_x=5; // количество пикселов в промежутке по горизонтали
sep_y=5; // количество пикселов в промежутке по вертикали
col_max=3; // количество колонок
col_cur=0; // текущее количество колонок
for (var i = 0; i<len; i++) {
this.createEmptyMovieClip("gallery_item_"+i, i);
var b = this["gallery_item_"+i];
b.attachMovie("gallery_item", "gallery_item", 1);
b._y=cur_y;
b._x=cur_x;
cur_x=cur_x+b._width+sep_x;
col_cur++;
if (col_cur>=col_max) {
cur_x=start_x;
cur_y=cur_y+b._height+sep_x;
col_cur=0;
}
hit = _root['new'+i];
trace(hit.my_path);
b.gallery_item.path=hit.my_path;
b.gallery_item.path2=hit.my_path2;
b.gallery_item.link = hit.my_link;
b.gallery_item.podpis = hit.my_podpis;
}
//
// вот этот кусок закомментрен - если сразу попытаться загрузить картинки, то ничего не работает. ее(функцию можно вызывать только спустя некоторое время.
//
//load_pictures();
}

function load_pictures() {
for (var i = 0; i<len; i++) {
this["gallery_item_"+i].gallery_item.load();
}
}