Просмотр полной версии : Странная работа swapDepths()
Волгоградец
29.09.2008, 18:08
Кто объяснит этот глюк и как его побороть:
Представьте фильм, два кадра. Первый - пустой. Во втором - клип и кнопка.
stop();
nextBut.onRelease = function():Void{
gotoAndPlay(1);
}
mc.swapDepths(10);
trace(mc.getDepth());
trace(this.getInstanceAtDepth(10));
При первом проходе все норм. Трэйс:
10
_level0.mc
Потом начинаются чудеса:
-16381
_level0.mc
:eek:
И в чем же чудеса? Вы когда на второй кадр заходите, там мувик на -16381 нарисован? Нарисован. А то что Вы его на 10 закинули, в первом кадре известно комунибудь? Неизвестно. Там и мувика такого ВООБЩЕ НЕТ. А при втором проходе все всплывает - есть тот, что Вы забросили на 10 и тот, что нарисован в кадре.
Волгоградец
29.09.2008, 18:50
Не понял...
А то что Вы его на 10 закинули, в первом кадре известно комунибудь?
Скрипт во втором кадре. То, что я закинул клип на новую глубину должно стать известно всем, независимо на каком кадре находимся.
А при втором проходе все всплывает - есть тот, что Вы забросили на 10 и тот, что нарисован в кадре.
Вы хотите сказать, что у меня теперь два мувика?
Не понял...
Скрипт во втором кадре. То, что я закинул клип на новую глубину должно стать известно всем, независимо на каком кадре находимся.
Вы хотите сказать, что у меня теперь два мувика?
Да, два мувика. Первый кадр является ключевым, поэтому флеш восстанавливает его содержимое, согласно данным в swf, а там сказано, что на такой то глубине должен быть такой-то клип. И раз клипа там нет, значит его надо добавить.
Волгоградец
29.09.2008, 19:21
Хм... Оч. интересно. Этого я не знал..
Действительно, создается второй клип - его визуально видно! Однако, его нет в дебаггере!
Однако, его нет в дебаггере!А там много чего не бывает.
iNils, де почитать про ето?
iNils, де почитать про ето?Частичное представление можно получить в спецификации формата SWF, глава Display List
Гм, явного упоминания этого феномена здесь ( "http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v9.pdf) не нашел. Но, видимо, нужно на свежую голову. Спасибо за совет.
Про копирование мувиков уже была когда-то тема… Вроде.
Это между строк написано.
Для добавления объекта в дисплейный список, используется тег PlaceObject2 или PlaceObject3 (расширен для использования blendmode), у него есть обязательное поле Depth, по которому идентифицируется символ, а вовсе не по имени. Соответственно, раз глубина изменилась, то идентифицировать символ нельзя, но быть то он должен, мы ведь попали на ключевой кадр, а в нем опять выполняется содержимое тега PlaceObject2, поэтому создается новый символ.
Не совсем понятно...
Если кадр пустой, но является ключевым, то в нем по-любому какие-то символы ищутся?
Только те, что описываются в swf.
При заходе на первый кадр плеер читает файл. Там сказано, что на втором кадре на глубине -16...... находится экземпляр символа .... Плеер его туда и помещает. Экземпляр, висящий в это время на глубине 10, в файле свф не описан - он там появился программно. Поэтому с ним плеер ничего не делает (в смысле не удаляет, как надо бы по идее) В результате у нас два экземпляра, что самое неприятное - с одинаковым instance name.
to iNils:
а какие описываются в swf?
to Wolsh:
И как же тогда решать проблему двух клипов с одинаковыми инстанснеймами?
Это же из-за такого по незнайке можно мозг себе сломать чтоб выявить причину глюков...
to iNils:
а какие описываются в swf?
Созданные в среде разработке и помещенные на таймлайна.
to Wolsh:
И как же тогда решать проблему двух клипов с одинаковыми инстанснеймами?Не должно быть двух клипов с одинаковым именем.
Да просто надо либо анимашки делать на таймлайне, либо программировать. Если второе, то забываем про кадры и наслаждаемся компанией из аттач/ремув и событий. Надо не решать проблему с именами, а не допускать ее возникновения. Не должно быть второго клипа, не будет и проблемы с именами)
1000 извинений если это уже оффтоп, но как же не допускать если в данном случае их создалось два и при чем, как Вы говорите, с одинаковыми именами?
Я с таким, просто, еще не сталкивался, но смотрю что тема такая можно рано или поздно на такие грабли наступить,
вот и пытаюсь для себя уяснить что к чему.
Волгоградец
01.10.2008, 10:29
Либо работаешь "вручную", т.е. ручками раскладываешь все клипы по местам и забываешь про программную манипуляцию глубинами, либо все клипы аттачишь из библиотеки.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.