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

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

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

Регистрация: Oct 2008
Адрес: Воронеж
Сообщений: 75
По умолчанию Error #1010 в Loader

Доброго времени суток.
Потребывалось загрузить избражение.
Беру демо код с нелпа по AS3
Получаю класс следующего содержания
Код AS3:
public class userPhoto extends Sprite {
 
		private var _load : Loader;
		var profile_arr : Array = game.data_prov.getUserProfiles();
		var url : String = profile_arr[0].photo;
		public function userPhoto():void
		{
			_load = new Loader();
			_load.contentLoaderInfo.addEventListener(Event.COMPLETE, initPhoto);
            _load.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
 
			var urlRequest : URLRequest = new URLRequest(url);
			_load.load(urlRequest);
		}
 
		 private function ioErrorHandler(event : IOErrorEvent) : void {
            trace("Unable to load image: " + url);
        }
 
 
		private function initPhoto(e : Event):void
		{
 
		}
	}
в основном приложении вызываю его таким образом
Код AS3:
public function init_listener(e : Event) : void {
                        public static var user_p : userPhoto;
			user_p = new userPhoto();
			addChild(user_p);
}
в резултьате имею ошибку следующего содержания
Код:
TypeError: Error #1010: A term is undefined and has no properties.
	at main::userPhoto$iinit()
	at main::game/init_listener()
	at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at MethodInfo-622()
Если закомментировать строки
Код AS3:
_load.contentLoaderInfo.addEventListener(Event.COMPLETE, initPhoto);
_load.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
_load.load(urlRequest);
то ошибка пропадает но как следствие ничего не работает.
Подскажите в чем проблема? Что я опять наворочил ?
Заранее благодарю за ответ.

Старый 24.10.2009, 21:08
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 2  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Скорее всего, у вас не определена переменная profile_arr. Попробуйте инициализировать url в конструкторе, протрейсив перед тем profile_arr.
А вообще, в вашем случае лучше и profile_arr инициализировать в конструкторе.

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

Регистрация: Sep 2002
Сообщений: 30,784
А зачем вы статическую переменную объявляете внутри метода экземпляра?

Старый 24.10.2009, 21:46
AlexsWulf вне форума Посмотреть профиль Отправить личное сообщение для AlexsWulf Найти все сообщения от AlexsWulf
  № 4  
Ответить с цитированием
AlexsWulf

Регистрация: Oct 2008
Адрес: Воронеж
Сообщений: 75
Цитата:
Сообщение от SamFR Посмотреть сообщение
Скорее всего, у вас не определена переменная profile_arr. Попробуйте инициализировать url в конструкторе, протрейсив перед тем profile_arr.
А вообще, в вашем случае лучше и profile_arr инициализировать в конструкторе.
Определена. Ну или по крайней мере трейс выдает то что ожидалось.

Добавлено через 2 минуты
Цитата:
Сообщение от etc Посмотреть сообщение
А зачем вы статическую переменную объявляете внутри метода экземпляра?
Это не удачный копи паст.
В реальном коде она определенна вне метода в классе. Так скопировал при попытке сократить код для форума.



PS: Извините за два ответа. Никогда не пользоваться цитатами. у уже при второй обнаружил кнопку "мультицитата".

Старый 24.10.2009, 23:04
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 5  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Цитата:
Сообщение от AlexsWulf Посмотреть сообщение
Определена. Ну или по крайней мере трейс выдает то что ожидалось.
Тогда протрейсите profile_arr[0]... Ошибка выскакивает на этапе инициализации, там и ищите:
Код AS3:
public class userPhoto extends Sprite {
 
	private var _load : Loader;
	private var profile_arr : Array;
	private var url : String;
 
	public function userPhoto():void{
		profile_arr = game.data_prov.getUserProfiles();
 
		trace('profile_arr: ' + profile_arr);
		trace('profile_arr[0]: ' + profile_arr[0]);
 
		_url = profile_arr[0].photo;
		trace('_url: ' + _url);
 
		_load = new Loader();
		_load.contentLoaderInfo.addEventListener(Event.COMPLETE, initPhoto);
		_load.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
 
		var urlRequest : URLRequest = new URLRequest(url);
		_load.load(urlRequest);
	}
 
	private function ioErrorHandler(event : IOErrorEvent) : void {
		trace("Unable to load image: " + url);
	}
 
	private function initPhoto(e : Event):void{
 
	}
}

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

Регистрация: Sep 2002
Сообщений: 30,784
Угу, скорее всего наглухо не учтена асинхронная сущность флеша.

Старый 25.10.2009, 15:41
AlexsWulf вне форума Посмотреть профиль Отправить личное сообщение для AlexsWulf Найти все сообщения от AlexsWulf
  № 7  
Ответить с цитированием
AlexsWulf

Регистрация: Oct 2008
Адрес: Воронеж
Сообщений: 75
Цитата:
Сообщение от SamFR Посмотреть сообщение
Тогда протрейсите profile_arr[0]...
выполнил
в результате получил
Код:
profile_arr: [object Object]
profile_arr[0]: [object Object]
_url: http://cs1205.vkontakte.ru/u14266980/c_4a75a9bb.jpg
TypeError: Error #1010: A term is undefined and has no properties.
	at main::userPhoto$iinit()
Добавлено через 1 минуту
Цитата:
Сообщение от etc Посмотреть сообщение
Угу, скорее всего наглухо не учтена асинхронная сущность флеша.
Я вроде постарался учесть асинхронность. Но так как только начал заниматься AS3 то все может быть

Старый 25.10.2009, 22:31
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 8  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Вы вынесли инициализацию переменных в конструктор?
Тот код, который я привёл двумя постами выше, работает? Если все трейсы выводят не null (undefined), то дело, скорее всего, в каких-то других частях кода, которые вы нам не показываете

Старый 25.10.2009, 22:53
AlexsWulf вне форума Посмотреть профиль Отправить личное сообщение для AlexsWulf Найти все сообщения от AlexsWulf
  № 9  
Ответить с цитированием
AlexsWulf

Регистрация: Oct 2008
Адрес: Воронеж
Сообщений: 75
Да вынес все переменные в конструктор.
Я боюсь что если покажу код полностью то мы меня убьете со словами: плохо написано , так не делают и т.д.
Попробую завтра еще по экспериментировать. Если не поможет буду выкладывать код )

Добавлено через 15 часов 2 минуты
так и не смог я победить ошибку
вот код всего класса
Код AS3:
package main {
	import flash.net.URLRequest;	
 
	import main.cursor.MouseExample;	
	import main.win_popup.lib_comp.w_modal;	
 
	import caurina.Tweener;	
 
	import flash.display.Loader;	
 
	import fl.transitions.Tween;	
 
	import api.DataAccessor;	
 
	import flash.events.Event;	
 
	import api.api_vkontakt;	
 
	import flash.display.MovieClip;
 
	/**
	 * @author AlexsWulf
	 * Основной класс игры
	 */
 
	public class game extends MovieClip {
 
		public static const INIT : String = "start";
		public static const COMPLET : String = "comp";
 
		public static var prod_ar : product_array = new product_array();
		public static var user_m : user_money;
		public static var user_g : user_gold;
		public static var f_var : flashvars;
		public static var data_prov : DataAccessor;
		public static var user_box : box;
		public static var user_p : userPhoto;
 
 
		private var _loader : Loader;
		private var _shadow_win : w_modal;
		public static var cursor : MouseExample;
 
 
		public function game() {
 
			startLoader();
			showLoader(true);
			addEventListener(game.INIT, init_listener);
			addEventListener(game.COMPLET, comp_listener);
			f_var = new flashvars(this);
			data_prov = new DataAccessor(f_var.getViewer_id(), f_var.getUser_id());
			data_prov.addEventListener(DataAccessor.INIT, function(e : Event) {
 
 
				dispatchEvent(new Event(INIT));
			});
 
		}
 
 
		public function init_listener(e : Event) : void {
			user_m = new user_money();
			addChild(user_m);
			user_g = new user_gold();
			addChild(user_g);
			user_box = new box();
			addChild(user_box);
			cursor = new MouseExample();
			addChild(cursor);
			showLoader(false);
			dispatchEvent(new Event(COMPLET));
		}
 
 
		public function comp_listener(e : Event) : void {
			trace(e.target);
 
			var url : String = "http://cs1205.vkontakte.ru/u14266980/c_4a75a9bb.jpg";
			var _loap_photo : Loader = new Loader();
			var reqest : URLRequest = new URLRequest(url);
			_loap_photo.contentLoaderInfo.addEventListener(Event.COMPLETE, comp_listener);
			_loap_photo.load(reqest);
		}
 
		// создаем и добавляем на сцену предзагрузчик
 
		public function startLoader(): void {
			_shadow_win = new w_modal();
			_loader = new Loader();
			_loader.visible = false;
			_loader.alpha = 0;
			_loader.x = Math.round(const_game.GAME_X / 2 - _loader.width / 2);
			_loader.y = Math.round(const_game.GAME_Y / 2 - _loader.height / 2);
 
			_shadow_win.visible = false;
			_shadow_win.alpha = 0;
			_shadow_win.height = 1000;
			_shadow_win.width = 1000;
			_loader.addChildAt(_shadow_win, 0);
 
			addChild(_loader);
		}
 
		/**
		 * Показ анимации предзагрузчика
		 *
		 */
		public function showLoader(show : Boolean = true):void {
			if (show) {
				Tweener.addTween(_loader, {_autoAlpha:1, time:0.5});
				Tweener.addTween(_shadow_win, {_autoAlpha:1, time:0.5});
			} else if (!show) {
				Tweener.addTween(_loader, {_autoAlpha:0, time:0.5});
				Tweener.addTween(_shadow_win, {_autoAlpha:0, time:0.5});
			}
		}
	}
}
и полный текст ошибки
Код:
[object game]
TypeError: Error #1010: A term is undefined and has no properties.
	at main::game/comp_listener()
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at main::game/init_listener()
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at MethodInfo-617()
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at api::DataAccessor/initStart()
	at api::DataAccessor/onVarsProfiles()
	at MethodInfo-124()
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.net::URLLoader/onComplete()
Добавлено через 35 часов 2 минуты
Все разобрался с этой проблемой.
Как и говорили искал не в том месте.

Проблема была в том что в библиотеке fla файла лежал мувик прилинковынный к Loader
Всем спасибо за помощь в решении проблемы.

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

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

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


 


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


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