Просмотр полной версии : Лежащие в кадре инстансы являются null
Есть некий FlashIDE проект, на первом и единственном кадре которого лежит MovieClip. Этот мувиклип управляется внешним .as файлом. В этом мувиклипе на первом и единственном кадре лежат ещё несколько мувиклипов, определённых как public переменные типа MovieClip. На этапе первого входа в кадр (не на этапе конструктора!) с этими вложенными мувиклипами выполняются некоторые действия.
Однако, флешплеер кидает ошибку о том, что некоторые из вложенных мувиклипов являются null.
В чём может быть проблема?
anmelegov
04.03.2012, 15:04
проблема скорее всего в кривом коде... и то что вы написали не понятно нифига, скажу больше: я когда это прочитал собирался как можно быстрее выбежать на улицу чтобы взрывом моей головы не разворотило дом к чертям.... вставьте кусок кода в котором происходит инициализация этих мувиклипов
getDefinitionByName?
addedToStage?
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
}
}
Аддед ту стейдж тоже не прокатывает.
super(); //<= Тут они инициализируются
Где тут? я не вижу инициализации вообще
Проверьте, "someVar" прописали в name у нужного инстанса?
Массив необходимых для определения переменных взял из library/SomeClass.xml
MikroAcse
04.03.2012, 16:24
По-моему вы вообще не объявили someVar :)
someVar = someMovieclip
Они должны определяться из сцены. В ней они есть. Некоторые - определяются. Некоторые - нет
MikroAcse
04.03.2012, 16:39
Хм...
Очередной загон компилятора FlashIDE?
Если не такая сложная структура, как и описано, то почему бы не переделать на скорую руку добавление внутренних клипов программно?
Добавлено через 3 минуты
Я, кстати, вообще не помню, чтобы компилятор FlashIDE автоматически добавлял поля в класс, не сгенерированный автоматически самой FlashIDE. Удивительно, как получается это:
Некоторые - определяются
без явного getChildByName()
Вообще - у меня всегда так было - всегда определялись. Косяк компил-тайм вылетал только если поля были объявлены строже, чем public.
А программно клипы добавлять нет возможности - их больше сотни
Хм. А может быть есть повторяющиеся идентификаторы? Два клипа с одним именем, грубо говоря.
Тогда была бы ошибка парсинга при открытии .fla или ошибка компилятора (строгий режим включён).
Переформулирую вопрос из первого поста: наступает ли какое-либо событие, когда символы кадра сопоставлены компилятором IDE с полями класса?
Не проще пример выложить?
Может быть, у вас все-таки не один кадр?
Кадр один. Выложить не могу :-(
Тогда проверьте на всякие TLF-филды, visible = false, что проставлены в самой FlashIDE (говорю все известные мне баги).
Клипы на разных слоях? Слои все видимы? После компиляции невидимые (если есть) слои попадают в проект?
В жизни бы не догадался. Случайно получилось. Во всём оказались виноваты дизигнеры.
*Барабанная дробь*
Проблемные мувики лежали в слоях, помеченных как "Guide Line".
Universe
06.03.2012, 01:48
мда...получается он их не импортирует в проект?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.