Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.04.2007, 11:35
Amra Kimmerian вне форума Посмотреть профиль Отправить личное сообщение для Amra Kimmerian Найти все сообщения от Amra Kimmerian
  № 1  
Ответить с цитированием
Amra Kimmerian

Регистрация: Dec 2006
Адрес: Россия, Пермь
Сообщений: 72
Отправить сообщение для Amra Kimmerian с помощью ICQ
По умолчанию Загрузка n картинок через while

Здравствуйте!
Зависает (выдает предложение остановить выполнение скрипта) компьютер при исполнении вот этого кода:
Код:
picPrewLoad = function (way:String) {
	var mc_loader:MovieClipLoader = new MovieClipLoader();
	var mc_Listener:Object = new Object();
	mc_loader.addListener(mc_Listener);
	while (_global.picPrewFlag) {
		//_global.picPrewFlag = false;
		_global.picPrewCounter++;
		trace(_global.picPrewCounter);
		_root.mc_picPrew.createEmptyMovieClip("picPrew"+_global.picPrewCounter, _global.picPrewCounter);
		mc_loader.loadClip(way+_global.picPrewCounter+".jpg", _root.mc_picPrew["picPrew"+_global.picPrewCounter]);
		mc_Listener.onLoadError = function() {
			_global.picPrewFlag = false;
			trace("picPrew load error!");
		};
	}
};
Картинки специально нет - хочу чтобы цикл прерывался сразу. Функция вызывается нажатием на кнопку. Трассировщик успевает отобразить значения _global.picPrewCounter до 7000-8000. Но вот trace("picPrew load error!") никогда не появлялся - т.е. события onLoadError как будто не было.
Если активизирую неактивную в коде строку, не виснет, ну оно понятно.
Если цикл while ставлю в /* ... */ ничего, естественно не виснет.
Искал по поиску слово "while" - нет ни в одном подразделе раздела Flash.
Почитал help, livedoc - все ясно и понятно.
С MovieClipLoader()-ом посложнее, взял их хелпа пример и переделал под свои клипы. Причем сначала инициализация mc_loader, mc_Listener и mc_loader.addListener стояла в коде в цикле while. Зависало. Подумал, что возможно это из-за постоянного их объявления в цикле, убрал их наверх (как сейчас) - не помогло. По умолчанию _global.picPrewFlag = true при загрузке всего проекта. Вместо него пробовал использовать местную переменную - не помогло.
1. Наверняка уверен что неправильно использую класс MovieClipLoader.
2. Или может листенер с ошибкой используется.
3. А может быть mc_Listener.onLoadError не успевает получить (или отдать) в тело своей функции событие об ошибке, потому что вызывается снова тут же, если вообще так можно сказать.
4. Ну или с адресами напутал (такие конструкции [...]+"...").
Уважаемые форумчане, подскажите, где ошибка/ошибки?

Старый 18.04.2007, 11:46
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 2  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
Код:
var mc_loader:MovieClipLoader = new MovieClipLoader();
var mc_Listener:Object = new Object();
_global.picPrewCounter = 0; // начальная фотография
var way:String = "pictures/" // папка с фотографиями

function picPrewLoad (way:String) {
	mc_loader.addListener(mc_Listener);
	while (picPrewFlag) {
		picPrewCounter++;
		trace(picPrewCounter);
		_root.mc_picPrew.createEmptyMovieClip("picPrew"+ picPrewCpicPrewounter + "_mc", picPrewCounter);
		mc_loader.loadClip(way + picPrewCounter + ".jpg", _root["picPrew" + picPrewCpicPrewounter + + "_mc"]);
		
		mc_Listener.onLoadError = function() {
			picPrewFlag = false;
			trace("picPrew load error!");
		};
	}
};
попробуйте так, везде прописывать глобал совершенно не обязательно, да и использовать его часто не рекомендуется
__________________
Free-lance | Twitter | Me


Последний раз редактировалось screamge; 18.04.2007 в 11:49.
Старый 18.04.2007, 11:47
0xFFFFFF вне форума Посмотреть профиль Отправить личное сообщение для 0xFFFFFF Посетить домашнюю страницу 0xFFFFFF Найти все сообщения от 0xFFFFFF
  № 3  
Ответить с цитированием
0xFFFFFF
† Таня Белая
 
Аватар для 0xFFFFFF

Регистрация: Mar 2006
Адрес: Москва
Сообщений: 929
Отправить сообщение для 0xFFFFFF с помощью ICQ Отправить сообщение для 0xFFFFFF с помощью Skype™
пока картинка загрузится и picPrewFlag поменяется на false цикл успеет сделать столько оборотов, что вылетит птичка.
фсё плохо, думайте.
__________________
Flashress' Blogue

Старый 18.04.2007, 11:50
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 4  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
не сразу въехал что нужно, while для этого дела не совсем подходит, локально может и что-то получится, но в нете погибнет.


Код:
var folder:String = "gallery/" //nazvanie papki otkuda berutsa fotki 
var currentnum:Number = 0; //nomer pervoi fotki


var listen:Object = new Object (); // sozdaem slushatelia
listen.onLoadComplete = function (){ // sobitie po okonchniyu zagruzki
	currentnum += 1
	loadpic()
}

listen.onLoadError = function (){
	trace ("error")
}


function loadpic (){
	_root.createEmptyMovieClip("pic" + currentnum + "_mc", currentnum)
	loader.loadClip(folder + ["pic" + currentnum + ".jpg"], "pic" + currentnum + "_mc");
}


var loader:MovieClipLoader = new MovieClipLoader ();
loader.addListener(listen)

loadpic ();
так корректнее.
__________________
Free-lance | Twitter | Me


Последний раз редактировалось screamge; 18.04.2007 в 12:23.
Старый 18.04.2007, 12:21
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цикл while создан не для отслеживания подобных загрузок.

Старый 18.04.2007, 15:20
Amra Kimmerian вне форума Посмотреть профиль Отправить личное сообщение для Amra Kimmerian Найти все сообщения от Amra Kimmerian
  № 6  
Ответить с цитированием
Amra Kimmerian

Регистрация: Dec 2006
Адрес: Россия, Пермь
Сообщений: 72
Отправить сообщение для Amra Kimmerian с помощью ICQ
screamge, Белая, __etc, спасибо Вам! Жаль в хелпе не написано "не юзать для подгрузки файлов". Не пропарился бы лишнее время.
Теперь подойду с другой стороны.

Старый 18.04.2007, 16:21
Amra Kimmerian вне форума Посмотреть профиль Отправить личное сообщение для Amra Kimmerian Найти все сообщения от Amra Kimmerian
  № 7  
Ответить с цитированием
Amra Kimmerian

Регистрация: Dec 2006
Адрес: Россия, Пермь
Сообщений: 72
Отправить сообщение для Amra Kimmerian с помощью ICQ
screamge, вставил Ваш код в свой проект, а он не работает. Потом методом всяких размышелний дошел до версии флэш плеера. Посмотрел в хелп, а там MovieClipLoader.class начинается от версии №7. А у меня все под 6 писано. Как мне быть? Переставил весию на 7 - заработало ( ). Но теперь проблема не только в том что что то не будет работать, а еще и в том, что хочется на 6 версии, которая почти у всех будет проигрываться, сделать. Ох чувствую что от темы, мною же созданной уклоняюсь, но это последний вопрос. В 6 версии каким образом грузились каталоги картинок? Стоит ли? Или большинство пользователей смогут посмотреть проект (сайт)?

Старый 18.04.2007, 16:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Можно использовать loadMovie.

Старый 18.04.2007, 16:39
Amra Kimmerian вне форума Посмотреть профиль Отправить личное сообщение для Amra Kimmerian Найти все сообщения от Amra Kimmerian
  № 9  
Ответить с цитированием
Amra Kimmerian

Регистрация: Dec 2006
Адрес: Россия, Пермь
Сообщений: 72
Отправить сообщение для Amra Kimmerian с помощью ICQ
Вы правы __etc, последние мои вопросы не по теме, основной вопрос исчерапан и пора мне закругляться . Спасибо!

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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