Whim
07.06.2006, 15:29
Ситуация такая:
Есть мувик CatalogPreview, а в нем smallbox. Есть функция загрузки каталога картинок, которая для выбранного списка файлов с картинками выполняет следующие действия:
чистит CatalogPreview от предыдущей загрузки;
первый элемент списка загружает в smallbox;
для последующих элементов делает smallbox.duplicateMovieClip и загружает изображение в созданную копию smallbox.
Тестирую на трех каталогах: каталог№1-3 картинки,каталог№2-1 картинка,каталог№3-4 картинки.
Если начать с каталога№3, то все работает как надо: сначала появляются все 4 картинки, а затем количество smallbox'ов меняется в зависимости от выбранного каталога. Но если начать, например, с
каталога№2, то сначала появится одна картинка, а затем из выбранного каталога будет вместо этой загружаться только первый элемент, т.е. smallbox'ы не хотят дублироваться в большем количестве. В чем загвоздка?
//**** ф-ция загрузки нового каталога *****
function LoadCatalog(catName){
ind=1;
sumLoad = 0;
sumTotal = 0;
for (i=0;i<ImageList.length;i++){
if (Imagelist[i].catalog==catName){
LoadPreview(Imagelist[i].file);
}
}
_root.CatalogPreview.onEnterFrame = function() {
sumLoad = this.smallbox.getBytesLoaded();
sumTotal = this.smallbox.getBytesTotal();
for (j=2;j<ind;j++){
sumLoad += this["smallbox"+j].getBytesLoaded();
sumTotal += this["smallbox"+j].getBytesTotal();
}
if (sumTotal>0 && sumLoad>=sumTotal){
delete this.onEnterFrame;
ImageSmallGo(this.smallbox);
for (j=2;j<ind;j++){
ImageSmallGo(this["smallbox"+j]);
}
}
};
}
//**** ф-ция загрузки Preview ***************************
function LoadPreview(im){
bx = -139.1;
by = -30.7;
trace("ind="+ind);
if (ind>1){
_root.CatalogPreview.smallbox.duplicateMovieClip("smallbox"+ind,ind,{_x:bx+60*(ind-1)-25,_y:by-25});
trace("create "+"smallbox"+ind+", x:"+_root.CatalogPreview["smallbox"+ind]._x);
_root.CatalogPreview["smallbox"+ind].loadMovie(im);
}
else{
with (_root.CatalogPreview.smallbox){
_x = bx - 25;
_y = by - 25;
loadMovie(im);
}
}
ind++;
}
//***** ф-ция очистки Preview ****************************
function ClearPreview(){
delete _root.CatalogPreview.smallbox.onEnterFrame;
_root.CatalogPreview.smallbox.unload();
for (j=2;j<ind;j++){
trace("remove "+"smallbox"+j);
delete root.CatalogPreview["smallbox"+j].onEnterFrame;
_root.CatalogPreview["smallbox"+j].unloadMovie();
}
}
//*************************************************
function changecatalog(){
if (first_click){
first_click = false;
_root.currentcatalog.removeItemAt(0);
}
else
ClearPreview();
LoadCatalog(_root.currentcatalog.getSelectedItem().label);
}
Есть мувик CatalogPreview, а в нем smallbox. Есть функция загрузки каталога картинок, которая для выбранного списка файлов с картинками выполняет следующие действия:
чистит CatalogPreview от предыдущей загрузки;
первый элемент списка загружает в smallbox;
для последующих элементов делает smallbox.duplicateMovieClip и загружает изображение в созданную копию smallbox.
Тестирую на трех каталогах: каталог№1-3 картинки,каталог№2-1 картинка,каталог№3-4 картинки.
Если начать с каталога№3, то все работает как надо: сначала появляются все 4 картинки, а затем количество smallbox'ов меняется в зависимости от выбранного каталога. Но если начать, например, с
каталога№2, то сначала появится одна картинка, а затем из выбранного каталога будет вместо этой загружаться только первый элемент, т.е. smallbox'ы не хотят дублироваться в большем количестве. В чем загвоздка?
//**** ф-ция загрузки нового каталога *****
function LoadCatalog(catName){
ind=1;
sumLoad = 0;
sumTotal = 0;
for (i=0;i<ImageList.length;i++){
if (Imagelist[i].catalog==catName){
LoadPreview(Imagelist[i].file);
}
}
_root.CatalogPreview.onEnterFrame = function() {
sumLoad = this.smallbox.getBytesLoaded();
sumTotal = this.smallbox.getBytesTotal();
for (j=2;j<ind;j++){
sumLoad += this["smallbox"+j].getBytesLoaded();
sumTotal += this["smallbox"+j].getBytesTotal();
}
if (sumTotal>0 && sumLoad>=sumTotal){
delete this.onEnterFrame;
ImageSmallGo(this.smallbox);
for (j=2;j<ind;j++){
ImageSmallGo(this["smallbox"+j]);
}
}
};
}
//**** ф-ция загрузки Preview ***************************
function LoadPreview(im){
bx = -139.1;
by = -30.7;
trace("ind="+ind);
if (ind>1){
_root.CatalogPreview.smallbox.duplicateMovieClip("smallbox"+ind,ind,{_x:bx+60*(ind-1)-25,_y:by-25});
trace("create "+"smallbox"+ind+", x:"+_root.CatalogPreview["smallbox"+ind]._x);
_root.CatalogPreview["smallbox"+ind].loadMovie(im);
}
else{
with (_root.CatalogPreview.smallbox){
_x = bx - 25;
_y = by - 25;
loadMovie(im);
}
}
ind++;
}
//***** ф-ция очистки Preview ****************************
function ClearPreview(){
delete _root.CatalogPreview.smallbox.onEnterFrame;
_root.CatalogPreview.smallbox.unload();
for (j=2;j<ind;j++){
trace("remove "+"smallbox"+j);
delete root.CatalogPreview["smallbox"+j].onEnterFrame;
_root.CatalogPreview["smallbox"+j].unloadMovie();
}
}
//*************************************************
function changecatalog(){
if (first_click){
first_click = false;
_root.currentcatalog.removeItemAt(0);
}
else
ClearPreview();
LoadCatalog(_root.currentcatalog.getSelectedItem().label);
}