Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Несколько вызовов LoadMove подряд. (http://www.flasher.ru/forum/showthread.php?t=136484)

obiz 18.02.2010 04:09

2 вызовова LoadMove подряд не работает.. Помогите!
 
Ситуция такая. Есть клип созданный на основе (не так важно)
http://www.flash-site.ru/flash_xml_photogallery.html

В процессе по нажатиям кнопок, дёргаются loadMove("xxx.jpg",1);
Так реалезована фотогалерея. Сам клип работает.
Проблемма при подсовывании клипа под некое флешовое апи, которое,
скорее всего его так же грузит через loadMove.

В нём загружается первый кадр и все последующие loadMove эгнорируются.
Что интересно! Если сначла запросить через loadMove несуществующий адрес,
то при нажатии на кнопки, дальнейшие фотографии загружаются и обновляются.

Вопрос, в чём моет быть данная проблемма?
Очень прошу о конструктивном совете!

З.Ы. Это очевидно не описка и не проблемма с путями к файлам или регистрами букв. Тут что-то похитрее. И ещё, в моём случае так же эгнорируется unloadMove. Клип остаётся себе на месте.

mooncar 18.02.2010 10:32

Используйте MovieClipLoader.
loadMovie - сам по себе проблема, так как не дает гарантии загрузки до выполнения остального кода.
AS работет асинхронно, то есть код уже может выполняться дальше, а контент еще не догрузился, и код будет работать впустую, в результате ничего не происходит.
Пора уже избавляться от порочного кода.

obiz 18.02.2010 13:10

Спасибо за совет, но к сожалению не помогло.
Перевёл код на лоадер. Взял как основу пример отсюда
http://demiart.ru/forum/index.php?showtopic=63026
Ситуация та-же, первую картинку загружает, после чего умирает и всегда
показывает только её (

Добавлено через 21 минуту
Ещё одно наблюдение. если после загрузки первого изображения создать ещё один контейнер
Код AS1/AS2:

var container:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());

и создавать дальше container1, container2 и т.д., то старые контейнеры остаются,
но и новые появляются подгруджая картинки. Может можно просто как-то убить конетйнер созданный через createEmptyMovieClip? Или пересоздать, обновить, прересовать...

Добавлено через 29 минут
В итоге, всё выглядит так, буд-то Клип не догружается и зависает где-то на последнем этапе.
Может эта проблема быть из-за того что описываемый код компилится в AS2, а зависает при загрузке его в ролик AS3 ?

Добавлено через 8 часов 9 минут
неужели только мне так не прёт с этими MoveLoade-рами?
Скажите, хотя бы, есть в AS грубый способ убить клип? Типа
delete или destroy ? какое-нибудь очищение память? :(

cass 19.02.2010 00:57

Уважамый obiz, канешно есть, но перед тем как задавать такие вопросы просто посмотрите в книге? в справке ( F1) не поленитесь там все написано=).
MoveLoade - это от лукавого.
Ну а вообще если ты хочешь затерать можно грузить изображение в этот же клип или на ту же глубину ... ну по крайне мере попробуй.
Созданые мувики можно удалить с помощью метода removeMovieClip();

obiz 19.02.2010 01:18

Цитата:

Сообщение от cass (Сообщение 887759)
не поленитесь там все написано

Благодарю, но видимо я плохо изложил суть проблемы. Про это я литературы не нашёл.

Цитата:

Сообщение от cass (Сообщение 887759)
можно грузить изображение в этот же клип или на ту же глубину ... ну по крайне мере попробуй.

Так я и пытался сначала. Так, кстати, и описано в кодах по ссылкам.
Ну если брать сокращённый вариант, то делается так:
Код AS1/AS2:

mcLoader.loadClip("01.jpg", container);
mcLoader.loadClip("02.jpg", container);

и на экране остаётся 01.jpg.
Как показывает трассировка, не вызывается даже onLoadStart.
Вот за removeMovieClip - спасибо. Его я упустил. Сейчас попробую...

Добавлено через 17 минут
К сожалению, removeMovieClip так же бездействует. Хотя и возвращает true.

Добавлено через 27 минут
Попытки пересоздавать MovieClip, MovieClipLoader и listener:Object
так же ни к чему ни превели. Ощущение что зависает какой-то глобальный процесс. Может быть такое, что этот просмотрщик начинает работать в пространстве загружающего мувика и там с чем-то сталкивается? Можно как-то ребутнуть всю среду окружения?

Добавлено через 1 час 10 минут
Нет, всё таки Flash индусы индусили..
Кто мне обьяснит почему такой хак решает мою проблемму - с мнея пиво! :drinks:
в обработчике ошибок:
Код AS1/AS2:

        if(err < 4)
        {
                dbg.text += "ERROR:"+err;
                mcLoaderXXX.loadClip("error url.jpg", canvXXX);
        }
        else if(err == 4)
                mcLoaderXXX.loadClip("01.jpg", canvXXX);

Говоря по русски, если 4 раза дёрнуть несуществющий адрес, то лоадер прочухивается и дальше работает ка положено.

Уже очевидно, что идёт конфликт с окружением той флешки, в которую подкладывается злосчастный просмотрщик. Вопрос - как всю логику просмотрщика полностью изолировать от среды внешней флешки?
Пробовал кстати обернуть весь код в
Код AS1/AS2:

try{
AllMyCode();
}
catch(e:Object)
{
        dbg.text = e;
        dbg.text += "#############";
}

как и ожидалось, никаких исключений, и ничего не изменилось (

cass 19.02.2010 02:46

Чесно оворя в AS3 я не силен, сталкиватся не приходилось, а ели чесно, чем разбиратся в чужих гемарах сделали бы свою галерею на подобе.
Щас я гляну что вы описали попродробнее если что в голову придет напишу.

Добавлено через 8 минут
Вам xml обязательно использовать?

obiz 19.02.2010 13:14

Благодарю за участие. После того как стало очевидно что это косяки самого флеша, я переписал просмотрщик на AS3 и всё чудесным образом заработало. Всё-таки AS2 это ещё не полноцая среда для программирования.


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

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