PDA

Просмотр полной версии : Проблема с SWF после его загрузки


BigDan
15.02.2007, 16:28
Загружаю проект используя классы Loader, LoaderInfo, URLRequest. После того как проект загрузился выдает такой месеж:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at script::ROOT$iinit()
где ROOT - главный класс моего проекта. Объясните, пожалуйста, в чем проблема?

BlooDHounD
16.02.2007, 13:56
ну ... бооще-то если ты компилишь флесом, то он должен тебе срочку показать где ошибка.

а вообще ошибка говорит что ты пытаешь вызвать чего-то у объекта которого нету.

etc
16.02.2007, 13:59
Да, флексовый компилер он такой, он говорит «Ошибка». А где — ищите сами.
Кстати, я бы поостерегся называть класс, как ROOT.

Флэш Потрошитель
16.02.2007, 17:54
Друзиа, у него компилятор не ругается. На рантайме ошибка ж.

script::ROOT$iinit()

Похоже, что ошибка возникает в конструкторе твоего класса ROOT, и Денис верно заметил, что так классы лучше не называть (тебя не поймут).

И еще похоже на то, что ты пытаешься получить доступ к несуществующему объекту, используя не точечный синтаксис (контролируется компилятором), а квадратные скобки (как оператор доступа к массиву -- не контролируется). Поэтому компилятор это пропускает, но на рантайме ошибка все равно возникает.

И, возможно, твой баг имеет отдаленное отношение к загрузке -- попробуй исключить загрузку и проверь, будет ли глюк.

Кстати, а что ты загружаешь, конкретно -- под какой Flash Player скомпилировано то, что ты грузишь?

--
Cypress Hill - да, знатные падонки..

BlooDHounD
16.02.2007, 18:49
У флекса есть дебуг моде, которое показывает строку в ран тайме, в которой было вызвано исключение.

BigDan
16.02.2007, 20:27
Вся проблема была в том, что в проекте я обращался к Stage"у.

miramax
16.02.2007, 21:40
Да, флексовый компилер он такой, он говорит «Ошибка». А где — ищите сами.Почему ? Там отличный дебаггер. А вот флеш 9 - бяка..., его там нет.
Только многочисленными трейсами можно опытным путём установть где ошибка.
Кстати, у бигдэна копипаст из окна трейса Flash 9 IDE

Dendroid
18.02.2007, 16:45
Вся проблема была в том, что в проекте я обращался к Stage"у.
Ну, тогда может никакого .stage ещё в этот момент нет. addChild сделать не забыл?
Второй момент - после загрузки доступ к родительскому объекту возникает не сразу, а после события Event.INIT, поэтому в загружаемом мувике надо делать:
loaderInfo.addEventListener(Event.INIT, initHandler);
function initHandler (event:Event) {
trace(loaderInfo.loader.parent);
}