Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.12.2009, 12:20
GSA85 вне форума Посмотреть профиль Отправить личное сообщение для GSA85 Найти все сообщения от GSA85
  № 1  
Ответить с цитированием
GSA85

Регистрация: Jul 2009
Сообщений: 12
По умолчанию Несколько flash плееров на одной странице

Искал по форуму но толком ничего не нашел...
На странице несколько flash плееров (один и тот же swf), играющих разные треки.
Как сделать так, чтобы при нажатии на play одного из них остальные останавливались?

Можно как то через js, но я его плохо знаю...

Старый 29.12.2009, 12:47
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Используйте класс ExternalInterface. Знания JS там нужно совсем чуть-чуть, примеры EI + JS есть в хелпе. Я так вообще почти не знаю JS, примеров из хелпа оказалось вполне достаточно.

Итак, разбейте задачу:
1) Сначала научитесь просто останавливать воспроизведение плеера со HTML-страницы: пусть у вас JS функция, повешенная на HTML-кнопку, будет останавливать воспроизведение с помощью флешкиного кода. В коде для этого будет использоваться метод ExternalInterface.addCallback.
2) Когда этого удастся добиться во второй флешке, настроите другой метод, ExternalInterface.call, который будет "дергать" эту функцию JS из другой флешки.
3) Ну и когда и с этим справитесь, нужно использовать оба метода в каждом из плееров.

Задача не так сложна, как вы думаете. JS нужен лишь только для нахождения объекта с флешкой на странице и сообщения флешке, какую ее внутреннюю функцию нужно вызвать.


Последний раз редактировалось mooncar; 29.12.2009 в 12:51.
Старый 29.12.2009, 13:39
zurkis вне форума Посмотреть профиль Отправить личное сообщение для zurkis Найти все сообщения от zurkis
  № 3  
Ответить с цитированием
zurkis
 
Аватар для zurkis

Регистрация: Nov 2008
Адрес: Атланта
Сообщений: 1,271
http://flash-ripper.com/articles/fla...-interface.php
__________________
Пока я жив, Вы горем обеспечены

Старый 29.12.2009, 13:58
GSA85 вне форума Посмотреть профиль Отправить личное сообщение для GSA85 Найти все сообщения от GSA85
  № 4  
Ответить с цитированием
GSA85

Регистрация: Jul 2009
Сообщений: 12
но разве так не остановятся сразу оба плеера?

Старый 29.12.2009, 14:34
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
При вызове JS-функции передавайте параметром те, которые требуются остановить.
Или вызывайте функцию циклом и передавайте в цикле каждый раз параметр того, которого требутеся остановить (т.е. цикл вызова по всем номерам, кроме своего).
Класс дает возможность передачи параметров, это очень здорово.

Старый 29.12.2009, 14:54
GSA85 вне форума Посмотреть профиль Отправить личное сообщение для GSA85 Найти все сообщения от GSA85
  № 6  
Ответить с цитированием
GSA85

Регистрация: Jul 2009
Сообщений: 12
спасибо!

Старый 15.01.2010, 03:01
GSA85 вне форума Посмотреть профиль Отправить личное сообщение для GSA85 Найти все сообщения от GSA85
  № 7  
Ответить с цитированием
GSA85

Регистрация: Jul 2009
Сообщений: 12
никак не могу передать параметр нужной флешке...
как только не пытался...
На странице 5 флешек, естественно у каждой свой id.
Уже весь мозг сломал... Как передать нужной флешке параметры?
Это не работает:
Код:
function sendFromJS(num) {
movie = "Movie_" + num;
var value = "0"; 
getMovie(movie).sendFromJS(value);
}

function getMovie(MovieName) {
var M$ = navigator.appName.indexOf("Microsoft")!=-1
return (M$ ? window : document)[MovieName]
}

Старый 15.01.2010, 05:20
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 8  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Попробуйте запускать страницу не локально.

У вас addCallback() прописан?

Кстати, есть другие варанты, как остановить плееры.

Например, при загрузке, плеер пробует коннектиться к localConnection_1. Если такого нет, то сам создает localConnection_1 и присваивает себе connection_id=1. Второй плеер точно так же действует, но, если localConnection_1 уже занято, создает localConnection_2 и устанавливает себе connection_id=2 и так далее. Когда нужно остановить все плееры, то в цикле от одного до ста (например) пробегаем соединения, запуская стоп-функцию и пропуская одно соединение, под номером, равным своему connection_id. Решение весьма грубое и не универсальное, имеет задержку в выполнении (было бы интересно сравнить с решением через ExternalInterface + JavaScript) и ограничение по количеству одновременно запущенных плееров.

Если ExternalInterface.available = false, то можно пробовать такой метод.

mooncar, что скажете?
__________________
hauts.ru


Последний раз редактировалось Hauts; 15.01.2010 в 05:44.
Старый 28.01.2010, 22:00
aristotle вне форума Посмотреть профиль Отправить личное сообщение для aristotle Найти все сообщения от aristotle
  № 9  
Ответить с цитированием
aristotle

Регистрация: Jan 2010
Сообщений: 3
GSA85, на самом деле проблема в том, что когда вы вызываете из JS функцию AS, функция AS еще не создалась. Я пока что нашел один выход: вызывать через интервал. В вашем случае четвертую строку заменить на:
Код AS3:
setTimeout(function(){getMovie(movie).sendFromJS(value),1000);

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:44.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.