Форум 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=94993)

chingachgoog 25.04.2007 14:30

swapDepths() Баг или я что-то непонимаю?
 
Вложений: 1
Столкнулся с крайне непонятной ситуацией.
(см. вложение)

Есть мувиклип. Он меняет свою глубину программно. И все бы ничего, пока он расположен на родительской диаграмме состоящей из ОДНОГО кадра. Но когда она состоит из нескольких кадров происходят "чудеса": мувик начинает размножаться.

Код в мувике:
Код:

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-й. А вот с его родителем уже ничего не выйдет.

etc 25.04.2007 14:33

Убивать надо мувик перед переходом назад.

chingachgoog 25.04.2007 14:38

А почему он копируется? Ведь если один кадр на главной диаграмме, то ничего не происходит.

Да и зачем убивать? Мне нужны данные сохраненные в этом мувике.

etc 25.04.2007 14:43

При swapDepths мувик уже не привязан к таймлайну и сохраняется при переходах по фреймам. При возврате на первый фрейм флеш видит там мувик и отображает (а куда он денется?). А копия клипа, в силу независимости от таймлайна продолжает отображаться.

chingachgoog 25.04.2007 15:19

Цитата:

Сообщение от __etc
При возврате на первый фрейм флеш видит там мувик

Забавно.
Если заменить swapDepth на startDrag например, то флеш возратясь на 1-й кадр почему-то не увидит там этот же клип в исходном положении.
И только для swapDepth делает такое "приятное исключение".
Не ясно почему он не убивает автоматом мувик на старой глубине? Ведь при одном кадре мувик перемещается (т.е. никаких исходников-прототипов мувика не сохраняется).

И как теперь с этим жить? :-)
Как убить мувик на старой глубине, если это должно и так делаться автоматом?

motor4ik 25.04.2007 15:26

это не должно делаться автоматом если вы понимаете суть дела, т.к. клип созданный вручную и кодом это не совсем одно и тоже, так вот swapDepth делает копию вашего клипа. т.е. создает динамический клип, а тот собсвенно остается, и теперь на новый клип кадры никак не влияют , а на тот влияют, т.е. все логично, что тот появится при переходе назад )) убивать нужно не тот мувик а этот новый созданный )

нда, лектор из меня хреновый, понимаю что ничего не понятно что я написал ))
вобщем нужно убивать мувик который вы делаете swapDepths при возврате на тот кадр на котором он уже есть

etc 25.04.2007 15:29

Цитата:

Сообщение от chingachgoog
Забавно.
Если заменить swapDepth на startDrag например

startDrag глубину не изменяет.

Kikasso 25.04.2007 15:29

Ну оставьте один кадр на таймлайне.
Или не перематывайте в тот кадр, где мувик появляется.

chingachgoog 25.04.2007 15:36

Цитата:

Сообщение от motor4ik
убивать нужно не тот мувик а этот новый созданный )
...
вобщем нужно убивать мувик который вы делаете swapDepths при возврате на тот кадр на котором он уже есть

Не, начальный мувик мне не нужен, а вот в перемещаемом храниться нужная инфа, поэтому убивать его нельзя.
Вы правы, можно решить проблему ИЗНАЧАЛЬНО помещая мувик на таймлайн программно - тогда такого не будет. Но по ряду причин такой вариант маложелателен. Или надо делать какой-то хитрый финт, что мувик при старте ОДИН раз себя копирует (и копия живет счастливо и долго) и удаляется?

motor4ik 25.04.2007 15:36

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


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

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