PDA

Просмотр полной версии : Странная особенность списка отображения объектов на таймлайне


: hr :
20.05.2010, 13:52
Друзья, кто в курсе, объясните почему так:

Первый ключевой кадр основной временной диаграммы пуст. Во втором - на сцене лежит символ, скажем s1. Головка воспроизведения проходит временную диаграмму в цикле, без остановки - 1 кадр, 2 кадр, 1кадр, 2кадр, etc.
Почему свойство stage экземпляра символа s1 в первом кадре не равно null, ведь фактически такого символа в первом кадре на сцене (в списке отображения) нет?

(для теста пример приложен)

arkadattx
20.05.2010, 13:54
Ну так все правильно. В 1м кадре нет объекта, следовательно и нет у него стэйджа.

: hr :
20.05.2010, 14:01
читаем внимательно :) Почему свойство stage экземпляра символа s1 в первом кадре не равно null

arkadattx
20.05.2010, 14:22
Ой, пардон, не дочитал.
Но вообще-тов 1м кадре в 1й раз трэйс выдает null.
А вообще в кадрах лучше не писать ;)

: hr :
20.05.2010, 14:32
Если в каком-либо кадре временной диаграммы существует переменная или функция, то соответствующую переменную компилятор объявляет автоматически - это объясняет почему первый трейс выдает null - значение по умолчанию для переменной типа MovieClip. Далее при втором проходе понятно почему s1 равно MovieClip - переменная инициализировалась символом и никуда не девается - все как в докумнтации, Но! символа то на временной диаграмме нет, т.е. по идее в списке отображения нет, а stage его не равен null - Почему?

а прямо уж так в кадрах то ясно дело никто не пишет, это все для возни с покадровой анимацией от дизайнера через SWC/addFrameScript

arkadattx
20.05.2010, 15:24
Я так понимаю, что дело обстоит так:
Создается слушатель, при этом он ссылается на объект с1, далее слушатель работает в каждом кадре, т.е. мы в каждом кадре имеем ссылку на мувик с1, где бы он в действительности не находился, поэтому при вызове мы получаем его стэйдж.

ЗЫ. на правоту не претендую.

: hr :
20.05.2010, 15:41
Создается слушатель, при этом он ссылается на объект...
не не не, пардон но это какая-то белиберда :wacko:

Голос старейшин ждать будем мы, дабы истину открыли!

Волгоградец
20.05.2010, 17:17
Баг..

etc
21.05.2010, 08:17
Скорее это особенности реализации мувиклипов, его ребенок продолжает принадлежать ему, но список отображения меняется в зависимости от текущего кадра.

Волгоградец
21.05.2010, 11:28
Не, numChildren выдает 0.

etc
21.05.2010, 11:30
И что? Список отображения меняется, но это не значит, что дети перестают принадлежать мувику.

Волгоградец
21.05.2010, 11:34
Не понял, как это? У спрайта есть parent, но у parent нет детей.

etc
21.05.2010, 11:35
В текущем кадре нет.

Волгоградец
21.05.2010, 11:37
Но у спрайта же есть родитель в текущем кадре, а в этом же кадре у родителя нет детей.

etc
21.05.2010, 11:42
Так что не так-то? Дети за пазухой, в следующем кадре покажет.

Волгоградец
21.05.2010, 11:48
Я не понимаю. Если у объекта нет детей, значит его дисплей лист пуст. Так как кто-то может иметь родителя, если он не в его дисплей листе?

etc
21.05.2010, 11:52
Легко, TextField тоже может иметь детей, но он вообще не DisplayObjectContainer.
TextField и MovieClip — специфические классы.

Что касается parent, то, допустим, вы сохранили ссылку на клип в кадре. После того, как родитель начал показывать другой кадр, неожиданное исчезновение родителя вам доставит множество проблем.

Волгоградец
21.05.2010, 12:07
Я не знал, что TextField может иметь детей. Как это можно посмотреть?
И не меньше проблем возникнет, если родитель есть, а ребенка в этом родителе нет. Странно то, что REMOVED срабатывает.
Вобщем у меня не укладывается это в голове. Может со временем пойму, если это правда не баг ).

etc
21.05.2010, 12:12
Называть это багом несколько недальновидно. Скорее особенность.

dimarik
21.05.2010, 12:55
И дитё каждый раз новое )