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

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

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

Регистрация: Mar 2011
Сообщений: 1
По умолчанию Пропадают элементы массива

Здравствуйте, помогите пожалуйста разобраться:
В массив вгоняю пять элементов, и последовательно через Loader их загружаю, первых два грузятся остальные "null";
Второй день не могу что за проблема, проект переписываю второй раз...
Код AS3:
...
		private function init(e:Event = null):void {
			if (e)
				removeEventListener(Event.ADDED_TO_STAGE, init);
 
			elementsArr.push(new Element("http://www.astrakhan-blog.ru/imageLoader/1.jpg"));
			elementsArr.push(new Element("http://www.astrakhan-blog.ru/imageLoader/2.jpg"));
			elementsArr.push(new Element("http://www.astrakhan-blog.ru/imageLoader/3.jpg"));
			elementsArr.push(new Element("http://www.astrakhan-blog.ru/imageLoader/4.jpg"));
			elementsArr.push(new Element("http://www.astrakhan-blog.ru/imageLoader/5.jpg"));
 
			for (var a:int = 0; a < elementsArr.length; a++) {
				trace(elementsArr[a].photo_url);
			}
 
			trace(elementsArr.length);
 
			loadImage();
		}
 
		function loadImage():void {
			imageLoader = new DynamicLoader();
			imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
			imageLoader.load(new URLRequest(elementsArr[index].photo_url));
			imageLoader.name = index.toString();
			trace("Load: " + elementsArr[index].photo_url);
		}
 
 
		function loadComplete(event:Event):void {
			imageLoader.width 	= 100;
			imageLoader.height 	= 100;
			elementsArr[index].photo.addChild(imageLoader);
			// addChild(imageLoader);
			if (index < imagePath.length - 1) {
				index += 1;
				loadImage();
			} else {
				for (var i : int = 0; i < elementsArr.length; i ++) {
					trace(elementsArr[i].photo_url);
					(elementsArr[i] as Element).photo.x = i * 100;
					(elementsArr[i] as Element).photo.y = 10;
					addChild(elementsArr[i].photo);
				}
			}
		}
 
		var imagePath:Array = ["http://www.astrakhan-blog.ru/imageLoader/1.jpg", "http://www.astrakhan-blog.ru/imageLoader/2.jpg"];
		var index : int = 0;
		var imageLoader:DynamicLoader;
 
		var elementsArr	: Array = new Array;
...
Element.as
Код AS3:
package com.studio {
 
	import flash.display.*;
	import flash.text.*;
 
	public class Element extends MovieClip {
 
		public var 		photo_url		: String;
		public var 		photo			: MovieClip;
 
		public function Element(photo_url : String) {
			this.photo_url		= photo_url;
			this.photo 			= new MovieClip();
 
			var tf : TextField = new TextField();
			tf.text = "none";
			tf.x=10;
			tf.y=10;
			tf.width = 80;
			tf.height = 80;
			this.photo.addChild(tf);
		}
	}
 
}

Старый 07.03.2011, 10:44
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Трейсите index, наверное вы его где-то еще меняете, ну или, не знаю DynamicLoader может делает что-то странное.
Кроме этого:
push() может принимать больше одного аргумента. Инициализировать простые типы (int, uint, Boolean) дефолтными значениями - бесполезный код. Подчерки в именах публичных свойств - плохой тон. Вызывать конструктор без круглых скобок - плохой тон (тем более, если вы уже в одном месте пользуетесь литералом массива, не понятно почему в другом вы используете полную запись). Меньше 3 букв в названии переменной - плохой тон.
__________________
Hell is the possibility of sanity

Старый 07.03.2011, 21:35
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 3  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Код AS3:
var imagePath:Array = ["http://www.astrakhan-blog.ru/imageLoader/1.jpg", "http://www.astrakhan-blog.ru/imageLoader/2.jpg"];
 
if (index < imagePath.length - 1) {
for (var i : int = 0; i < elementsArr.length; i ++) {
Видите разницу между двумя строчками? Количество загружаемых данных ограничивается двумя элементами, остальные не грузятся.

Рекомендую вообще вынести загрузку в отдельный класс, параметризованный списком загружаемых элементов. Уведомление о процессе загрузки - как угодно, можно событиями, можно callback в конце.

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

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

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


 


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


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