![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Столкнулся с крайне непонятной ситуацией.
(см. вложение) Есть мувиклип. Он меняет свою глубину программно. И все бы ничего, пока он расположен на родительской диаграмме состоящей из ОДНОГО кадра. Но когда она состоит из нескольких кадров происходят "чудеса": мувик начинает размножаться. Код в мувике: if (!Ainit){
_x=Math.random()*550
_y=Math.random()*400
Ainit=true
trace("INIT; name "+_name+" depth "+getDepth())
}
onPress=function(){
this._parent[_name].swapDepths(_parent.getNextHighestDepth())
trace("name "+_name+" depth "+getDepth())
}
1 - этот мувик 2 - кнопки перехода по кадрам (соответственно две кнопки) Баг проявляется если выполнить следующую последовательность: 1) сменить глубину (кликнуть по мувику) 2) перейти на следующий кадр (кликнуть по нижней кнопке) 3) вернуться на предыдущий кадр (кликнуть по верхней кнопке) На этом месте появляется ВТОРОЙ мувик! С ним можно выполнить ту же последовательность действий с 1 по 3-й. А вот с его родителем уже ничего не выйдет. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Убивать надо мувик перед переходом назад.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
При swapDepths мувик уже не привязан к таймлайну и сохраняется при переходах по фреймам. При возврате на первый фрейм флеш видит там мувик и отображает (а куда он денется?). А копия клипа, в силу независимости от таймлайна продолжает отображаться.
|
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
Если заменить swapDepth на startDrag например, то флеш возратясь на 1-й кадр почему-то не увидит там этот же клип в исходном положении. И только для swapDepth делает такое "приятное исключение". Не ясно почему он не убивает автоматом мувик на старой глубине? Ведь при одном кадре мувик перемещается (т.е. никаких исходников-прототипов мувика не сохраняется). И как теперь с этим жить? :-) Как убить мувик на старой глубине, если это должно и так делаться автоматом? |
|
|||||
|
Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
|
это не должно делаться автоматом если вы понимаете суть дела, т.к. клип созданный вручную и кодом это не совсем одно и тоже, так вот swapDepth делает копию вашего клипа. т.е. создает динамический клип, а тот собсвенно остается, и теперь на новый клип кадры никак не влияют , а на тот влияют, т.е. все логично, что тот появится при переходе назад )) убивать нужно не тот мувик а этот новый созданный )
нда, лектор из меня хреновый, понимаю что ничего не понятно что я написал )) вобщем нужно убивать мувик который вы делаете swapDepths при возврате на тот кадр на котором он уже есть |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Ну оставьте один кадр на таймлайне.
Или не перематывайте в тот кадр, где мувик появляется. |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
Вы правы, можно решить проблему ИЗНАЧАЛЬНО помещая мувик на таймлайн программно - тогда такого не будет. Но по ряду причин такой вариант маложелателен. Или надо делать какой-то хитрый финт, что мувик при старте ОДИН раз себя копирует (и копия живет счастливо и долго) и удаляется? |
|
|||||
|
Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
|
атачте его из библиотеки, в любом случае это лучше, раз вы всеровно меняете глубину, то уж лучше его подгрузить на нужную грубину из библиотеки.
и не надо хранить данные в мувике! |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|