![]() |
swapDepths() Баг или я что-то непонимаю?
Вложений: 1
Столкнулся с крайне непонятной ситуацией.
(см. вложение) Есть мувиклип. Он меняет свою глубину программно. И все бы ничего, пока он расположен на родительской диаграмме состоящей из ОДНОГО кадра. Но когда она состоит из нескольких кадров происходят "чудеса": мувик начинает размножаться. Код в мувике: Код:
if (!Ainit){1 - этот мувик 2 - кнопки перехода по кадрам (соответственно две кнопки) Баг проявляется если выполнить следующую последовательность: 1) сменить глубину (кликнуть по мувику) 2) перейти на следующий кадр (кликнуть по нижней кнопке) 3) вернуться на предыдущий кадр (кликнуть по верхней кнопке) На этом месте появляется ВТОРОЙ мувик! С ним можно выполнить ту же последовательность действий с 1 по 3-й. А вот с его родителем уже ничего не выйдет. |
Убивать надо мувик перед переходом назад.
|
А почему он копируется? Ведь если один кадр на главной диаграмме, то ничего не происходит.
Да и зачем убивать? Мне нужны данные сохраненные в этом мувике. |
При swapDepths мувик уже не привязан к таймлайну и сохраняется при переходах по фреймам. При возврате на первый фрейм флеш видит там мувик и отображает (а куда он денется?). А копия клипа, в силу независимости от таймлайна продолжает отображаться.
|
Цитата:
Если заменить swapDepth на startDrag например, то флеш возратясь на 1-й кадр почему-то не увидит там этот же клип в исходном положении. И только для swapDepth делает такое "приятное исключение". Не ясно почему он не убивает автоматом мувик на старой глубине? Ведь при одном кадре мувик перемещается (т.е. никаких исходников-прототипов мувика не сохраняется). И как теперь с этим жить? :-) Как убить мувик на старой глубине, если это должно и так делаться автоматом? |
это не должно делаться автоматом если вы понимаете суть дела, т.к. клип созданный вручную и кодом это не совсем одно и тоже, так вот swapDepth делает копию вашего клипа. т.е. создает динамический клип, а тот собсвенно остается, и теперь на новый клип кадры никак не влияют , а на тот влияют, т.е. все логично, что тот появится при переходе назад )) убивать нужно не тот мувик а этот новый созданный )
нда, лектор из меня хреновый, понимаю что ничего не понятно что я написал )) вобщем нужно убивать мувик который вы делаете swapDepths при возврате на тот кадр на котором он уже есть |
Цитата:
|
Ну оставьте один кадр на таймлайне.
Или не перематывайте в тот кадр, где мувик появляется. |
Цитата:
Вы правы, можно решить проблему ИЗНАЧАЛЬНО помещая мувик на таймлайн программно - тогда такого не будет. Но по ряду причин такой вариант маложелателен. Или надо делать какой-то хитрый финт, что мувик при старте ОДИН раз себя копирует (и копия живет счастливо и долго) и удаляется? |
атачте его из библиотеки, в любом случае это лучше, раз вы всеровно меняете глубину, то уж лучше его подгрузить на нужную грубину из библиотеки.
и не надо хранить данные в мувике! |
Цитата:
Для моей конкретной задачи надо. Считайте этот мувик компонентом. |
Поставить проверку в первом кадре, если мувик на данной глубине существует, то вынести старый мувик на положительную глубину и убить. В противном случае просто swapDepths.
|
Цитата:
|
Имя вынесенного мувика можно поменять.
|
Цитата:
Цитата:
|
При первом запуске и выносе на новую глубину клип можно переименовать. При возврате на первый кадр старыйц клип со старым именем будет доступен, уж прибить его сложностей не составляет.
Если это геморрой, то имхо загрузка ещё бОльший геморрой. |
Пока решилось так:
Код:
if (!Ainit){Также неясна вероятность того, что на данной глубине в ДРУГОМ кадре (не первом) может быть ДРУГОЙ объект. |
Я же предложил решение.
|
Цитата:
Цитата:
|
Цитата:
Может ли случиться, что разные объекты в разных фреймах имеют одну и ту же отрицательную глубину |
об этом можно не беспокоиться
|
Цитата:
|
Для этого на всякий случай ввел дополнительную переменную UnicName="myUnic".
(см. код выше) Пока все пашет как надо :-) (тьфу-тьфу-тьфу) Всем спасибо! Цитата:
|
| Часовой пояс GMT +4, время: 17:18. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.