![]() |
глюк mc.swapDepths ?
Вложений: 1
Такой вот...
Если поместить на событие клипа метод swapDepths этого клипа (например, this.swapDepths (1000);), затем перейти вперёд на главной диаграмме, а затем обратно, то опять сработает событие load (при чём ещё только один раз. больше не будет)... Почему так?! [исходник прилагается: чтобы понять о чём я, просмотрите код в клипе (его там всего пара строчек), а затем запустите клип и смотрите на трейс. если же убрать строку this.swapDepths (1000); в клипе square, всё нормально. похоже на какую-то несогласованность событий и функций] Вопрос-довесок :) Как узнать самое большое значение depth на данной временной диаграмме (кстати, у каждой диаграммы свой набор уровней (depth)?)? |
ага, а если поставить this.swapDepths(random(1000));
то онлоад срабатывает КАЖДЫЙ раз :)) а все потому что клипы сделанные руками и свапнутые потом не удаляются сами при переходе по кадрам таймлайна... с динамически созданными клипами такого глюка нет. поскольку ты свапишь все время на одну глубину, то первый раз срабатывает онлоад самого клипа, а потом его онлоад на глубине 1000 |
Большое спасибо :)
Суть понял, но вот с одной из твоих фраз всё никак не разберусь... Цитата:
Как я понял, load происходит повторно потому что... так, кажется я начинаю понимать... Т.е. при swapDepths в задумке создаётся новый клип на новом уровне, в него передаютя все свойства (в том числе, что он уже загружен) и методы старого и старый удаляется? То есть из-за этого глюка имеем два одинаковых клипа. Так? |
почти так :)
как там оно обстоит на самом деле - хрен знает... но суть в том, что на каждой новой глубине лоад срабатывает заново. а все потому что из-за свапа клип не исчезнет при переходе в следующий кадр.... хотя должен бы, как всякий уважающий себя клип созданный НЕ-динамически... |
Так. С причиной болезни мы разобрались.
Теперь хотелось бы, чтобы Вы прописали больному какое-нибудь лекарство :D Проще говоря, как это лечится? |
Вообще-то обсуждалось (как обычно).
ММ видимо, не рассчитывала, что swapDepths будет использоваться для клипов, созданных "вручную". Флэш распределяет их по глубинам и не парится. Если при переходе на некий кадр в таймлайне прописан клип, а на соотв. глубине его нет - он его туда пихает. Получается ещё один клип:
onClipEvent (load) { trace ("[square][onload]: loaded"); // this.swapDepths (1000); } on (press) { square.swapDepths (1000); square._y+=100; prevFrame (); } После второго свопа исходная глубина уже не пустует, поэтому третий клип не появляется. Соответственно, если при переходе на глубине (отрицательной, ибо отрицательные - для сделанных "вручную") клипа не должно быть, а он там есть, флеш его затирает нафих: on (press) { if(square.getDepth()!=-1000){ square.swapDepths (-1000); square._y+=100; }else prevFrame(); } Причем, флэш правильно опознаёт клип, так что "подменить" не удается. |
А чтобы правильно лечить, нужно знать историю болезни (т.е. зачем все это нужно).
Вообще-то attachMovie - хорошее средство. |
2TTS
Из всего выше сказанного и сказанного вне, делаем вывод, что лечения нет? Цитата:
Тока вот теперь возникает проблема с онЛоадом... [http://www.flasher.ru/forum/showthre...threadid=47485] буду пробовать... |
| Часовой пояс GMT +4, время: 22:57. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.