Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Странная работа swapDepths() (http://www.flasher.ru/forum/showthread.php?t=116398)

Волгоградец 29.09.2008 18:08

Странная работа swapDepths()
 
Кто объяснит этот глюк и как его побороть:
Представьте фильм, два кадра. Первый - пустой. Во втором - клип и кнопка.
Код:

stop();
nextBut.onRelease = function():Void{
        gotoAndPlay(1);
}
mc.swapDepths(10);
trace(mc.getDepth());
trace(this.getInstanceAtDepth(10));

При первом проходе все норм. Трэйс:
Цитата:

10
_level0.mc
Потом начинаются чудеса:
Цитата:

-16381
_level0.mc
:eek:

Wolsh 29.09.2008 18:30

И в чем же чудеса? Вы когда на второй кадр заходите, там мувик на -16381 нарисован? Нарисован. А то что Вы его на 10 закинули, в первом кадре известно комунибудь? Неизвестно. Там и мувика такого ВООБЩЕ НЕТ. А при втором проходе все всплывает - есть тот, что Вы забросили на 10 и тот, что нарисован в кадре.

Волгоградец 29.09.2008 18:50

Не понял...
Цитата:

А то что Вы его на 10 закинули, в первом кадре известно комунибудь?
Скрипт во втором кадре. То, что я закинул клип на новую глубину должно стать известно всем, независимо на каком кадре находимся.
Цитата:

А при втором проходе все всплывает - есть тот, что Вы забросили на 10 и тот, что нарисован в кадре.
Вы хотите сказать, что у меня теперь два мувика?

iNils 29.09.2008 19:00

Цитата:

Сообщение от Волгоградец (Сообщение 767093)
Не понял...

Скрипт во втором кадре. То, что я закинул клип на новую глубину должно стать известно всем, независимо на каком кадре находимся.

Вы хотите сказать, что у меня теперь два мувика?

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

Волгоградец 29.09.2008 19:21

Хм... Оч. интересно. Этого я не знал..
Действительно, создается второй клип - его визуально видно! Однако, его нет в дебаггере!

iNils 29.09.2008 20:01

Цитата:

Сообщение от Волгоградец (Сообщение 767104)
Однако, его нет в дебаггере!

А там много чего не бывает.

dimarik 30.09.2008 00:27

iNils, де почитать про ето?

iNils 30.09.2008 01:26

Цитата:

Сообщение от dimarik (Сообщение 767172)
iNils, де почитать про ето?

Частичное представление можно получить в спецификации формата SWF, глава Display List

dimarik 30.09.2008 01:47

Гм, явного упоминания этого феномена здесь не нашел. Но, видимо, нужно на свежую голову. Спасибо за совет.

etc 30.09.2008 02:44

Про копирование мувиков уже была когда-то тема… Вроде.

iNils 30.09.2008 02:46

Это между строк написано.
Для добавления объекта в дисплейный список, используется тег PlaceObject2 или PlaceObject3 (расширен для использования blendmode), у него есть обязательное поле Depth, по которому идентифицируется символ, а вовсе не по имени. Соответственно, раз глубина изменилась, то идентифицировать символ нельзя, но быть то он должен, мы ведь попали на ключевой кадр, а в нем опять выполняется содержимое тега PlaceObject2, поэтому создается новый символ.

Mur4ik 30.09.2008 03:07

Не совсем понятно...
Если кадр пустой, но является ключевым, то в нем по-любому какие-то символы ищутся?

iNils 30.09.2008 03:27

Только те, что описываются в swf.

Wolsh 30.09.2008 15:36

При заходе на первый кадр плеер читает файл. Там сказано, что на втором кадре на глубине -16...... находится экземпляр символа .... Плеер его туда и помещает. Экземпляр, висящий в это время на глубине 10, в файле свф не описан - он там появился программно. Поэтому с ним плеер ничего не делает (в смысле не удаляет, как надо бы по идее) В результате у нас два экземпляра, что самое неприятное - с одинаковым instance name.

Mur4ik 30.09.2008 17:28

to iNils:
а какие описываются в swf?

to Wolsh:
И как же тогда решать проблему двух клипов с одинаковыми инстанснеймами?
Это же из-за такого по незнайке можно мозг себе сломать чтоб выявить причину глюков...

iNils 30.09.2008 17:50

Цитата:

Сообщение от Mur4ik (Сообщение 767332)
to iNils:
а какие описываются в swf?

Созданные в среде разработке и помещенные на таймлайна.
Цитата:

Сообщение от Mur4ik (Сообщение 767332)
to Wolsh:
И как же тогда решать проблему двух клипов с одинаковыми инстанснеймами?

Не должно быть двух клипов с одинаковым именем.

Wolsh 30.09.2008 18:04

Да просто надо либо анимашки делать на таймлайне, либо программировать. Если второе, то забываем про кадры и наслаждаемся компанией из аттач/ремув и событий. Надо не решать проблему с именами, а не допускать ее возникновения. Не должно быть второго клипа, не будет и проблемы с именами)

Mur4ik 01.10.2008 02:24

1000 извинений если это уже оффтоп, но как же не допускать если в данном случае их создалось два и при чем, как Вы говорите, с одинаковыми именами?
Я с таким, просто, еще не сталкивался, но смотрю что тема такая можно рано или поздно на такие грабли наступить,
вот и пытаюсь для себя уяснить что к чему.

Волгоградец 01.10.2008 10:29

Либо работаешь "вручную", т.е. ручками раскладываешь все клипы по местам и забываешь про программную манипуляцию глубинами, либо все клипы аттачишь из библиотеки.


Часовой пояс GMT +4, время: 00:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.