PDA

Просмотр полной версии : Остановка вложенных клипов


Schwan_Stabilo
26.07.2002, 13:18
Приветствую. Есть вопрос. Предположим у меня на главной временной диаграмме есть клип, а в него вложено еще штук 7. Мне надо по нажатию кнопки на главной временной диаграмме остановить все что на ней находится, а потом начать с того же места. Для гланого клипа я это сделал. Но, если в каком-то месте я останавливаю главный клип, вложенный, находящийся в данном кадре, продолжает проигрыватьсяи это печально. Вопрос: можно ли останавливать все сразу, а потом запускать с того же места? Нет ли функции типа StopAll или чего-то подобного, которая бы стопила клип и все вложенные в него? Если нет, то как это в принципе можно реализовать. Клипы вкладывал руками, не програмно и они располагаются в основном клипе только в определенных областях.
P.S. Да, сразу скажу что использование loadMovie не подходит.

Darina
26.07.2002, 13:27
Ну когда вкладывал клипы руками, надо было давать им instance name (movik1, ... movik7, например). А потом обращаться к ним и стопить:
glavnii_movik.movik1.stop();
и т.д. для всех мувиков
О stopAll ничего не слышала.

lexass
26.07.2002, 13:28
продолжает проигрыватьсяи это печально

Видимо у тЯ одного такие проблемы ;)

Нет ли функции типа StopAll
если сам напишешь, то будет :)

myMC.stop()

Schwan_Stabilo
26.07.2002, 14:12
понял, в общем-то я догадывался :), но хотел уточнить. Эх, что-то придумывать, потому что то о чем вы говорите понятно и используется, но в данном случае...посмотрим. Спасибо за совет. :)

Nox Noctis
26.07.2002, 16:46
можно сделать так:
MovieClip.prototype.collapse = function() {
this.stop();
for (var i in this) {
if (typeof (this[i]) == "movieclip") {
this[i].collapse();
}
}
};
MovieClip.prototype.relaunch = function() {
this.play();
for (var i in this) {
if (typeof (this[i]) == "movieclip") {
this[i].relaunch();
}
}
};

чтобы остановить клип и все что в нем пишем:
любой_клип.collapse();
чтобы запустить клип и все клипы в нем снова - пишем:
любой_клип.relaunch();

Nox Noctis
26.07.2002, 16:51
а можно обойтись одной функцией с параметром:
MovieClip.prototype.togglePlay = function(action) {
this[action]();
for (var i in this) {
if (typeof (this[i]) == "movieclip") {
this[i][action]();
}
}
};

теперь те же действия делаем как
some_clip.togglePlay("stop");
или
some_clip.togglePlay("play");

lexass
26.07.2002, 17:10
Nox Noctis, ну зачем ты людям такие сложности выдаешЬ???

Nox Noctis
26.07.2002, 17:17
кхх... lexxass, я вообще-то на вопрос ответил, пока некоторые в соседнем топике черти-чем групповым занимаются :)))

зы: к тому же все что нужно чтобы воспользоваться этими "сложностями" - это скопировать скрипт и пользоваться :)

Schwan_Stabilo
26.07.2002, 17:53
Это то что нужно, спасибо огромное. Все понятно и достаточно просто.

lexass
26.07.2002, 17:53
:(
ИМХО
самому написать его интереснеЙ

а то дальше будут вопросы:
а куда это вставить?

ЗЫ
для использования чего-то человек должен созреть

Nox Noctis
26.07.2002, 17:57
Оригинал написал(а) lexass
а куда это вставить?тебя сегодня определенно на этом заело ;)

lexass
26.07.2002, 18:13
Оригинал написал(а) Nox Noctis
тебя сегодня определенно на этом заело ;)

да я зомбирован ;)
довели, поехал мозг промывать

Schwan_Stabilo
30.07.2002, 14:50
2Nox Noctis: Еще раз спасибо, я как раз закончил Колина Мука читать. Все красиво и понятно. Пришлось добавить кое-что в код, чтобы была проверка в каком фрэйме головка находится, на случай нескольких вложенных в один клип клипов.

MovieClip.prototype.togglePlay = function(action)
{
this[action]();
for (var i in this)
{
if (typeof (this[i]) == "movieclip" && this[i]._currentFrame != this[i]._totalFrames)
{
this[i][action]();
}
}
}

Вот так получилось. Все работает. Еще раз спасибо.