![]() |
Несколько flash плееров на одной странице
Искал по форуму но толком ничего не нашел...
На странице несколько flash плееров (один и тот же swf), играющих разные треки. Как сделать так, чтобы при нажатии на play одного из них остальные останавливались? Можно как то через js, но я его плохо знаю... |
Используйте класс ExternalInterface. Знания JS там нужно совсем чуть-чуть, примеры EI + JS есть в хелпе. Я так вообще почти не знаю JS, примеров из хелпа оказалось вполне достаточно.
Итак, разбейте задачу: 1) Сначала научитесь просто останавливать воспроизведение плеера со HTML-страницы: пусть у вас JS функция, повешенная на HTML-кнопку, будет останавливать воспроизведение с помощью флешкиного кода. В коде для этого будет использоваться метод ExternalInterface.addCallback. 2) Когда этого удастся добиться во второй флешке, настроите другой метод, ExternalInterface.call, который будет "дергать" эту функцию JS из другой флешки. 3) Ну и когда и с этим справитесь, нужно использовать оба метода в каждом из плееров. Задача не так сложна, как вы думаете. JS нужен лишь только для нахождения объекта с флешкой на странице и сообщения флешке, какую ее внутреннюю функцию нужно вызвать. |
|
но разве так не остановятся сразу оба плеера?
|
При вызове JS-функции передавайте параметром те, которые требуются остановить.
Или вызывайте функцию циклом и передавайте в цикле каждый раз параметр того, которого требутеся остановить (т.е. цикл вызова по всем номерам, кроме своего). Класс дает возможность передачи параметров, это очень здорово. |
спасибо!
|
никак не могу передать параметр нужной флешке...
как только не пытался... На странице 5 флешек, естественно у каждой свой id. Уже весь мозг сломал... Как передать нужной флешке параметры? Это не работает: Код:
function sendFromJS(num) { |
Попробуйте запускать страницу не локально.
У вас addCallback() прописан? Кстати, есть другие варанты, как остановить плееры. Например, при загрузке, плеер пробует коннектиться к localConnection_1. Если такого нет, то сам создает localConnection_1 и присваивает себе connection_id=1. Второй плеер точно так же действует, но, если localConnection_1 уже занято, создает localConnection_2 и устанавливает себе connection_id=2 и так далее. Когда нужно остановить все плееры, то в цикле от одного до ста (например) пробегаем соединения, запуская стоп-функцию и пропуская одно соединение, под номером, равным своему connection_id. Решение весьма грубое и не универсальное, имеет задержку в выполнении (было бы интересно сравнить с решением через ExternalInterface + JavaScript) и ограничение по количеству одновременно запущенных плееров. Если ExternalInterface.available = false, то можно пробовать такой метод. mooncar, что скажете? |
GSA85, на самом деле проблема в том, что когда вы вызываете из JS функцию AS, функция AS еще не создалась. Я пока что нашел один выход: вызывать через интервал. В вашем случае четвертую строку заменить на:
Код AS3:
|
| Часовой пояс GMT +4, время: 23:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.