![]() |
Управление воспроизведением ролика
Здравствуйте!
Я хочу сделать флешку, которая бы управляла воспроизведением основного ролика: запуск, останов, зацикливание. В связи с этим возникают вопросы: start и stop управляют только анимацией сцены, а не вложенных клипов - соответственно надо рекурсивно перебрать все клипы и их остановить или запустить. Но как узнать, клип в настоящий момент проигрывается или остановлен? И ещё - есть ли какое-то свойство у клипа, которое указывает, будет ли он проигрываться один раз или по кругу? Спасибо!!! |
Если я тебя правильно понял, то вот.
Создаешь три кнопки.Одной пишешь: Код:
on(press){Вторая кнопка остановки: Код:
on(press){Код:
on(press){ |
inils давал недавно этот код, за что ему большое спасибо!
Код:
mc1.onEnterFrame = function () { |
Спасибо большое за советы, но у меня вопрос в том, что stop(), насколько я понимаю, действует только на главную сцену, а не на вложенные клипы. Поэтому если сделать stop() сцене, то вложенные клипы будут продолжать играть, пока им не сделать stop() явно. Орган управления хотелось бы сделать универсальным - для этого надо, я так понимаю, перебрать все клипы суцены и те что играют в настоящий момент запомнить и сделать им stop() (ну, соответственно, проделать это всё рекурсивно) - потом запомненным клипам сделать play(). Перебрать клипы я там понимаю не проблема - я не знаю, как проверить, играют ли они в настоящий момент или остановлены.
Ещё я не знаю насчёт управления зацикливанием, может подскажете... |
Вы не поняли. Код выше (от магистра iNils'a) при нажатии на клип mc останавливает или запускает (в зависимости от своей же последней команды) ВСЕ клипы, и _рут, и вложенные.
Я немного переписал здесь, чтобы Вам было легче протестировать - создайте три-четыре клипа с простенькой анимацией (это могут быть экземпляры одного символа), поставте их на сцену и дайте имена какие хотите, но один назовите mc - это будет управляющая кнопка. При нажатии на нее клипы будут останавливаться - запускаться. Этот код поместите в первый кадр рута. В трейсе Вы увидите имена клипов, попавших под управление. И рут тоже будет там. Код:
_root._name = 'Root' |
Спасибо за код попробовал, всё работает.
Проблема в том, что запуск / останов производится ВСЕХ вложенных клипов, а не только тех, которые проигрывались в момент нажатия кнопки. Поясню на примере: В первый кадр помещается клип, там же ему делается stop(). В 100 кадре этому клипу делается play(). В промежутке между 1 и 100 кадрами (например, в 50 кадре) пользователь нажимает заветную кнопку 2 раза - соответственно клип, который должен был запуститься только в 100 кадре, запускается много раньше. А это не есть хорошо. Вопрос: как отследить у объекта movieclip, играет ли он или остановлен? Если это возможно - значит при первом нажатии кнопки надо перед остановкой запоминать все играющие клипы, чтобы при повторном нажатии запустить только их. Спасибо за помощь |
Запомнить текущий кадр для каждого клипа, подождать еще один кадр и сравнить с тем, что запомнили.
|
Если задержка на пару кадров Вас не пугает, можно спросить два раза currentframe и сравнить. Вот рабочий код
Код:
var ListArray:Array2 iNils : впереди на лихом коне :) Классно, я много узнал нового, возясь с твоим кодом. Только знаешь, delete this.onEnterFrame из прототипа похоже не работает :( |
Цитата:
|
блин опять началось... хоть вообще рот не открывай.
У меня на фирме я один дизайнер. И пять программистов (питон, С++ и т.д.) Все нормально понимают что я говорю. Здесь чё ни скажи, тут же кто-нибудь за слова цепляться начинает. Причем ведь нормально сказал - функция ИЗ прототипа, т.е. функция, прописанная в прототипе. Что не так??? |
| Часовой пояс GMT +4, время: 08:49. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.