Просмотр полной версии : глюк mc.swapDepths ?
Такой вот...
Если поместить на событие клипа метод swapDepths этого клипа (например, this.swapDepths (1000);), затем перейти вперёд на
главной диаграмме, а затем обратно, то опять сработает событие load (при чём ещё только один раз. больше не будет)... Почему так?!
[исходник прилагается: чтобы понять о чём я, просмотрите код в клипе (его там всего пара строчек), а затем запустите клип и смотрите на
трейс. если же убрать строку this.swapDepths (1000); в клипе square, всё нормально. похоже на какую-то несогласованность событий и функций]
Вопрос-довесок :)
Как узнать самое большое значение depth на данной временной диаграмме (кстати, у каждой диаграммы свой набор уровней (depth)?)?
Nox Noctis
31.07.2003, 22:25
ага, а если поставить this.swapDepths(random(1000));
то онлоад срабатывает КАЖДЫЙ раз :))
а все потому что клипы сделанные руками и свапнутые потом не удаляются сами при переходе по кадрам таймлайна... с динамически созданными клипами такого глюка нет.
поскольку ты свапишь все время на одну глубину, то первый раз срабатывает онлоад самого клипа, а потом его онлоад на глубине 1000
Большое спасибо :)
Суть понял, но вот с одной из твоих фраз всё никак не разберусь...
клипы сделанные руками и свапнутые потом не удаляются сами
Не совсем понял смысла высказанного (видимо, из-за того, что что-то по не знанию ускользает из моего взгляда :)).
Как я понял, load происходит повторно потому что... так, кажется я начинаю понимать...
Т.е. при swapDepths в задумке создаётся новый клип на новом уровне, в него передаютя все свойства (в том числе, что он уже загружен) и методы старого и старый удаляется?
То есть из-за этого глюка имеем два одинаковых клипа. Так?
Nox Noctis
31.07.2003, 22:40
почти так :)
как там оно обстоит на самом деле - хрен знает...
но суть в том, что на каждой новой глубине лоад срабатывает заново.
а все потому что из-за свапа клип не исчезнет при переходе в следующий кадр.... хотя должен бы, как всякий уважающий себя клип созданный НЕ-динамически...
Так. С причиной болезни мы разобрались.
Теперь хотелось бы, чтобы Вы прописали больному какое-нибудь лекарство :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
Из всего выше сказанного и сказанного вне, делаем вывод, что лечения нет?
Вообще-то attachMovie - хорошее средство.
Опять же из всего выше сказанного и сказанного вне :D делаю вывод, что так и придётся делать...
Тока вот теперь возникает проблема с онЛоадом...
[http://www.flasher.ru/forum/showthread.php?s=&threadid=47485]
буду пробовать...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.