|
|
|||||
Регистрация: Oct 2008
Адрес: Воронеж
Сообщений: 75
|
Error #1010 в Loader
Доброго времени суток.
Потребывалось загрузить избражение. Беру демо код с нелпа по 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 { } } 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() _load.contentLoaderInfo.addEventListener(Event.COMPLETE, initPhoto); _load.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); _load.load(urlRequest); Подскажите в чем проблема? Что я опять наворочил ? Заранее благодарю за ответ. |
|
|||||
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Скорее всего, у вас не определена переменная profile_arr. Попробуйте инициализировать url в конструкторе, протрейсив перед тем profile_arr.
А вообще, в вашем случае лучше и profile_arr инициализировать в конструкторе. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
А зачем вы статическую переменную объявляете внутри метода экземпляра?
|
|
|||||
Регистрация: Oct 2008
Адрес: Воронеж
Сообщений: 75
|
Цитата:
Добавлено через 2 минуты Это не удачный копи паст. В реальном коде она определенна вне метода в классе. Так скопировал при попытке сократить код для форума. PS: Извините за два ответа. Никогда не пользоваться цитатами. у уже при второй обнаружил кнопку "мультицитата". |
|
|||||
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Тогда протрейсите profile_arr[0]... Ошибка выскакивает на этапе инициализации, там и ищите:
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{ } } |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Угу, скорее всего наглухо не учтена асинхронная сущность флеша.
|
|
|||||
Регистрация: Oct 2008
Адрес: Воронеж
Сообщений: 75
|
выполнил
в результате получил 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() Я вроде постарался учесть асинхронность. Но так как только начал заниматься AS3 то все может быть |
|
|||||
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Вы вынесли инициализацию переменных в конструктор?
Тот код, который я привёл двумя постами выше, работает? Если все трейсы выводят не null (undefined), то дело, скорее всего, в каких-то других частях кода, которые вы нам не показываете |
|
|||||
Регистрация: Oct 2008
Адрес: Воронеж
Сообщений: 75
|
Да вынес все переменные в конструктор.
Я боюсь что если покажу код полностью то мы меня убьете со словами: плохо написано , так не делают и т.д. Попробую завтра еще по экспериментировать. Если не поможет буду выкладывать код ) Добавлено через 15 часов 2 минуты так и не смог я победить ошибку вот код всего класса 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() Все разобрался с этой проблемой. Как и говорили искал не в том месте. Проблема была в том что в библиотеке fla файла лежал мувик прилинковынный к Loader Всем спасибо за помощь в решении проблемы. |
Часовой пояс GMT +4, время: 17:30. |
|
« Предыдущая тема | Следующая тема » |
|
|