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

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

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

Регистрация: Aug 2008
Адрес: Украина, город Херсон
Сообщений: 50
Отправить сообщение для StasMIX с помощью ICQ
Cool Проблемы с ByteArray

Пишу игру. В ней есть класс library. В нем хранятся все игровые объекты(загруженные loader-ом swf файлы). При надобности из этого класса library эти объекты копируются другими loader-ми, например:
Код AS3:
loader.loadBytes(lib.libraryContent[0].contentLoaderInfo.bytes)
Запустил, попробовал, все работает. Как видно все объекты в классе library содержатся в массиве, каждый элемент которого Loader. После этого я решил сделать проще(не знаю правильно это или нет), и сделать массив не Loader, а сразу ByteArray-в. Реализация:
Код AS3:
libraryContent[i]=libraryContent[i].contentLoaderInfo.bytes;
То есть теперь можно загружать объекты так:
Код AS3:
loader.loadBytes(lib.libraryContent[0])
Нажимаю Test Movie, все работает. Делаю Publish, запускаю swf файл и вот что происходит: Должно вывестись на экран 23 одинаковых объекта, взятых из library, но отображается только 7, и выводится много ошибок, что формат загруженного файла неизвестен и тд.
Почему возникает такая ошибка?
__________________
Я не злопамятный, я запишу

Старый 31.10.2011, 10:07
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Вероятно потому, что не дожидаетесь окончания загрузки swf-файлов.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 31.10.2011, 11:24
StasMIX вне форума Посмотреть профиль Отправить личное сообщение для StasMIX Найти все сообщения от StasMIX
  № 3  
Ответить с цитированием
StasMIX
 
Аватар для StasMIX

Регистрация: Aug 2008
Адрес: Украина, город Херсон
Сообщений: 50
Отправить сообщение для StasMIX с помощью ICQ
Дожидаюсь. Если бы не дожидался, то и при Test Movie ничего тоже не работало.
__________________
Я не злопамятный, я запишу

Старый 31.10.2011, 11:39
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
По представленным примерам сложно судить. Выложите минимальный пример с загрузкой и обработкой файлов.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 31.10.2011, 12:00
StasMIX вне форума Посмотреть профиль Отправить личное сообщение для StasMIX Найти все сообщения от StasMIX
  № 5  
Ответить с цитированием
StasMIX
 
Аватар для StasMIX

Регистрация: Aug 2008
Адрес: Украина, город Херсон
Сообщений: 50
Отправить сообщение для StasMIX с помощью ICQ
Игра уже довольно большая, весь код писать нету смысла, но постараюсь все моменты связанные с этой библиотекой выложить:
Создание:
Код AS3:
lib = new library();
lib.addEventListener('libraryLoadComplite', gameStart);
А вот сам код загрузки библиотеки.
Код AS3:
//начало загрузки библиотеки
public function library():void {
	load(url);//загрузка txt файла с путями ко всем элементам библиотеки 
	addEventListener(Event.COMPLETE, loadElements);
}
//загрузка элементов
private function loadElements(e:Event):void {
	libraryURL=this.data.split('\n');//создается масив url адресов
	for (i=0; i<libraryURL.length; i++) {//проход по всем url адресам
		libraryURL[i]=libraryURL[i].substring(0,libraryURL[i].length-1);//так-как все элементы в файле написанны с новой строчки, удаляем последний символ пробела в каждом url
		url.url=libraryURL[i];//задаем url загружаемого файла
		libraryContent[i]= new Loader();//в массив, который в последствии и будет содержать ByteArray-и
		libraryContent[i].load(url);//загружаем
		libraryContent[i].contentLoaderInfo.addEventListener(Event.COMPLETE, counter);
	}
	function counter(e:Event):void {//функция вызывается при загрузке каждого элемента, тоесть столько раз, сколько было элементов
		j++;//счетчик сколько элементов загружено
		if (j==libraryURL.length) {//если кол загруженых элементов равно числу всех элементов то делать:
			for (i=0; i<libraryURL.length; i++) {//перебираем все элементы
				libraryContent[i]=libraryContent[i].contentLoaderInfo.bytes;//каждому из этих элементов присваиваем ByteArray
			}
			dispatchEvent(libraryLoadComplite);//событие конец загрузки
		}
	}
}
Пример использования приводил выше.
__________________
Я не злопамятный, я запишу

Старый 31.10.2011, 13:04
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Попробуйте использовать отдельный экземпляр URLRequest для каждого Loader.

Цитата:
...что формат загруженного файла неизвестен и тд.
Ошибка возникает, если загруженные данные не swf, jpeg, png или gif форматов. Про "и т.д." подробнее расскажите. Какие еще ошибки подразумевались?

Используйте какую-либо готовую библиотеку массовой загрузки, например, Bulkloader или LoaderMax.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 31.10.2011, 17:04
StasMIX вне форума Посмотреть профиль Отправить личное сообщение для StasMIX Найти все сообщения от StasMIX
  № 7  
Ответить с цитированием
StasMIX
 
Аватар для StasMIX

Регистрация: Aug 2008
Адрес: Украина, город Херсон
Сообщений: 50
Отправить сообщение для StasMIX с помощью ICQ
Цитата:
Сообщение от dimarik Посмотреть сообщение
Ошибка возникает, если загруженные данные не swf, jpeg, png или gif форматов. Про "и т.д." подробнее расскажите. Какие еще ошибки подразумевались?
Объясню еще раз. Тот код, который я написал выше, работает только, если я запускаю его во flash(Ctrl+Enter). В программе должно происходить следующее - загружаться swf, и размножится 23 раза. Нажимаю Ctrl+Enter - все отлично, все 23 объекта есть. Нажимаю Publich, закрываю flash, запускаю swf созданный при Publich-е и он загружает объект, клонирует 7 раз, а оставшиеся 16 раз не клонирует и выдает 16 одинаковых ошибку подряд - Error #2044: Необработанный IOErrorEvent:. text=Error #2124: Неизвестный тип загруженного файла.
__________________
Я не злопамятный, я запишу


Последний раз редактировалось StasMIX; 31.10.2011 в 17:07.
Старый 31.10.2011, 21:45
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Есть вариант ограничить количество одновременно загружаемых файлов 3-5 потоками.

Добрее немножко, пожалуйста. Я тоже не злопамятный.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 01.11.2011, 15:47
StasMIX вне форума Посмотреть профиль Отправить личное сообщение для StasMIX Найти все сообщения от StasMIX
  № 9  
Ответить с цитированием
StasMIX
 
Аватар для StasMIX

Регистрация: Aug 2008
Адрес: Украина, город Херсон
Сообщений: 50
Отправить сообщение для StasMIX с помощью ICQ
Спасибо, обязательно попробую.
__________________
Я не злопамятный, я запишу

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

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

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


 


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


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