Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   глюк mc.swapDepths ? (http://www.flasher.ru/forum/showthread.php?t=47484)

metton 31.07.2003 22:01

глюк mc.swapDepths ?
 
Вложений: 1
Такой вот...
Если поместить на событие клипа метод swapDepths этого клипа (например, this.swapDepths (1000);), затем перейти вперёд на
главной диаграмме, а затем обратно, то опять сработает событие load (при чём ещё только один раз. больше не будет)... Почему так?!
[исходник прилагается: чтобы понять о чём я, просмотрите код в клипе (его там всего пара строчек), а затем запустите клип и смотрите на
трейс. если же убрать строку this.swapDepths (1000); в клипе square, всё нормально. похоже на какую-то несогласованность событий и функций]


Вопрос-довесок :)
Как узнать самое большое значение depth на данной временной диаграмме (кстати, у каждой диаграммы свой набор уровней (depth)?)?

Nox Noctis 31.07.2003 22:25

ага, а если поставить this.swapDepths(random(1000));
то онлоад срабатывает КАЖДЫЙ раз :))

а все потому что клипы сделанные руками и свапнутые потом не удаляются сами при переходе по кадрам таймлайна... с динамически созданными клипами такого глюка нет.

поскольку ты свапишь все время на одну глубину, то первый раз срабатывает онлоад самого клипа, а потом его онлоад на глубине 1000

metton 31.07.2003 22:37

Большое спасибо :)
Суть понял, но вот с одной из твоих фраз всё никак не разберусь...

Цитата:

клипы сделанные руками и свапнутые потом не удаляются сами
Не совсем понял смысла высказанного (видимо, из-за того, что что-то по не знанию ускользает из моего взгляда :)).
Как я понял, load происходит повторно потому что... так, кажется я начинаю понимать...

Т.е. при swapDepths в задумке создаётся новый клип на новом уровне, в него передаютя все свойства (в том числе, что он уже загружен) и методы старого и старый удаляется?

То есть из-за этого глюка имеем два одинаковых клипа. Так?

Nox Noctis 31.07.2003 22:40

почти так :)

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

metton 01.08.2003 03:15

Так. С причиной болезни мы разобрались.
Теперь хотелось бы, чтобы Вы прописали больному какое-нибудь лекарство :D
Проще говоря, как это лечится?

TTS 01.08.2003 03:47

Вообще-то обсуждалось (как обычно).
 
ММ видимо, не рассчитывала, что 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();
}
Причем, флэш правильно опознаёт клип, так что "подменить" не удается.

TTS 01.08.2003 03:51

А чтобы правильно лечить, нужно знать историю болезни (т.е. зачем все это нужно).

Вообще-то attachMovie - хорошее средство.

metton 01.08.2003 15:58

2TTS
Из всего выше сказанного и сказанного вне, делаем вывод, что лечения нет?


Цитата:

Вообще-то attachMovie - хорошее средство.
Опять же из всего выше сказанного и сказанного вне :D делаю вывод, что так и придётся делать...
Тока вот теперь возникает проблема с онЛоадом...
[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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.