Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Проблема с циклом и загрузкой картинки (http://www.flasher.ru/forum/showthread.php?t=101216)

DiFlash 13.09.2007 16:35

Проблема с циклом и загрузкой картинки
 
Доброго время суток.
У меня возникла проблема с циклом
Код:

for(iP = 0;iP < ColPictur; iP++ ){
_root["But" + iP].onRelease = function() {
        delete _root.LoadFPicture_1 ;
        _root.attachMovie("LoadFPicture", "LoadFPicture_1" , 5010);
        var fPic_obj:Object = new Object();
        var fPic:MovieClipLoader = new MovieClipLoader();
        fPic.loadClip(AdresFullPic[iP] , _root.LoadFPicture_1);
        delete fPic;
        delete fPic_obj;
        delete _root["But" + iP].onRelease;       
        }
}

Собственно говоря я делаю галерею из картинок, всё сделал и осталось сделать функцию открытии большой картинки при нажатии на маленькую из галереи, честно не ожидал что с этим могут возникнуть проблема а собственно проблема в том что событие onRelease срабатывает но при этом Ip у массива AdresFullPic всё время равен 9 а максимальное значение у цикла это 8, ну то есть ColPictur = 9, такое ощущение что загрузка начинается после прохода всего цикла а у 9го элемента масива просто напросто нет значение по этому и ни чего не загружается , если так оно и есть то тогда как по другому писать код? проверять же нужно каждую кнопку и без цикла не обойтись ни как

В общем решил сделать по другому, убрал for и создал цикл в ручную
Код:

_root["But" + iP].onRelease = function() {
        delete _root.LoadFPicture_1 ;
        _root.attachMovie("LoadFPicture", "LoadFPicture_1" , 5010);
        var fPic_obj:Object = new Object();
        var fPic:MovieClipLoader = new MovieClipLoader();
        fPic.loadClip(AdresFullPic[iP] , _root.LoadFPicture_1);
        delete fPic;
        delete fPic_obj;
        delete _root["But" + iP].onRelease;       
        }
If(iP < ColPictur)
{iP++}
else {iP= 0}

Тут честно говоря начался полный дурдом, картинки загружаться начали но в рандомном порядке, то есть нажимаеш на картинку 1 открывается 4, нажимаешь ещё раз на неё открывается 8 и т.д. в чём проблема ни понимаю, iP меняется только после прохода по событию если конечно оно было

Если у кого есть время то подскажите в чём проблема, я уже всю голову изломал разбираясь в чём тут дело, ну или дайте ссылку на описание решения подобной проблемы
Заранее спасибо

silin 13.09.2007 16:46

в onRelease всех кнопок ты используешь одну и ту же переменную, которая после отработки цикла и равна 9..
надо определить каждой свою и использовать в onRelease ее:
Код:

for(iP = 0;iP < ColPictur; iP++ ){
        _root["But" + iP].id=iP;
        _root["But" + iP].onRelease = function() {
                var iP=this.id;
                ...
               
        }
}


DiFlash 13.09.2007 16:59

Я честно говоря даже и не знал что нужно присваивать отдельное значение чтобы не возникло конфликта Огромное СПАСИБО silin


Часовой пояс GMT +4, время: 06:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.