PDA

Просмотр полной версии : Лежащие в кадре инстансы являются null


BuKT
04.03.2012, 14:01
Есть некий FlashIDE проект, на первом и единственном кадре которого лежит MovieClip. Этот мувиклип управляется внешним .as файлом. В этом мувиклипе на первом и единственном кадре лежат ещё несколько мувиклипов, определённых как public переменные типа MovieClip. На этапе первого входа в кадр (не на этапе конструктора!) с этими вложенными мувиклипами выполняются некоторые действия.

Однако, флешплеер кидает ошибку о том, что некоторые из вложенных мувиклипов являются null.

В чём может быть проблема?

anmelegov
04.03.2012, 15:04
проблема скорее всего в кривом коде... и то что вы написали не понятно нифига, скажу больше: я когда это прочитал собирался как можно быстрее выбежать на улицу чтобы взрывом моей головы не разворотило дом к чертям.... вставьте кусок кода в котором происходит инициализация этих мувиклипов

in4core
04.03.2012, 15:07
getDefinitionByName?
addedToStage?

BuKT
04.03.2012, 15:09
public class SomeClass extends MovieClip {
public var someVar:MovieClip;
public function SomeClass() {
super(); //<= Тут они инициализируются
addEventListener(Event.ENTER_FRAME, init);
}
private function init(e:Event = null):void {
e.currentTarget.removeEventListener(e.type, init);
someVar.x++; //<= А тут ошибка null
}
}

Аддед ту стейдж тоже не прокатывает.

in4core
04.03.2012, 16:09
super(); //<= Тут они инициализируются
Где тут? я не вижу инициализации вообще

dimarik
04.03.2012, 16:17
Проверьте, "someVar" прописали в name у нужного инстанса?

BuKT
04.03.2012, 16:19
Массив необходимых для определения переменных взял из library/SomeClass.xml

MikroAcse
04.03.2012, 16:24
По-моему вы вообще не объявили someVar :)
someVar = someMovieclip

BuKT
04.03.2012, 16:32
Они должны определяться из сцены. В ней они есть. Некоторые - определяются. Некоторые - нет

MikroAcse
04.03.2012, 16:39
Хм...

КорДум
04.03.2012, 16:45
Очередной загон компилятора FlashIDE?
Если не такая сложная структура, как и описано, то почему бы не переделать на скорую руку добавление внутренних клипов программно?

Добавлено через 3 минуты
Я, кстати, вообще не помню, чтобы компилятор FlashIDE автоматически добавлял поля в класс, не сгенерированный автоматически самой FlashIDE. Удивительно, как получается это:
Некоторые - определяются
без явного getChildByName()

BuKT
04.03.2012, 16:55
Вообще - у меня всегда так было - всегда определялись. Косяк компил-тайм вылетал только если поля были объявлены строже, чем public.

А программно клипы добавлять нет возможности - их больше сотни

КорДум
04.03.2012, 17:09
Хм. А может быть есть повторяющиеся идентификаторы? Два клипа с одним именем, грубо говоря.

BuKT
04.03.2012, 17:13
Тогда была бы ошибка парсинга при открытии .fla или ошибка компилятора (строгий режим включён).

Переформулирую вопрос из первого поста: наступает ли какое-либо событие, когда символы кадра сопоставлены компилятором IDE с полями класса?

udaaff
04.03.2012, 17:21
Не проще пример выложить?

ChuwY
04.03.2012, 17:22
Может быть, у вас все-таки не один кадр?

BuKT
04.03.2012, 20:35
Кадр один. Выложить не могу :-(

КорДум
04.03.2012, 20:38
Тогда проверьте на всякие TLF-филды, visible = false, что проставлены в самой FlashIDE (говорю все известные мне баги).
Клипы на разных слоях? Слои все видимы? После компиляции невидимые (если есть) слои попадают в проект?

BuKT
04.03.2012, 21:49
В жизни бы не догадался. Случайно получилось. Во всём оказались виноваты дизигнеры.
*Барабанная дробь*
Проблемные мувики лежали в слоях, помеченных как "Guide Line".

Universe
06.03.2012, 01:48
мда...получается он их не импортирует в проект?