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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

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

Регистрация: Oct 2009
Сообщений: 6
По умолчанию Управление роликом со страницы.

Здравствуйте.
У меня есть вопрос, который я не могу решить уже почти неделю. Сломал всю голову, наверное потому что я не являюсь программистом в Actionscript и javascript. Но сделать надо. Суть в том, чтобы можно было управлять роликом по средствам отправки переменных из PHP в Javascript, а оттуда во встроенный Flash ролик на странице.
Нашел в сети похожий пример с исходниками, посмотрел как все устроено, в примере из текстового поля на странице отправляется текст в текстовое поле ролика, и обратно при нажатии на кнопку. переделал код, на сколько хватило ничтожных знаний javascript, как понял что на стороне Actionscript ничего трогать не надо. В Flash удалил поле и кнопку и сделал анимацию с кружочком который меняет цвет каждые 5 кадров. По моей задумке в момент нажатия на кнопку на странице ролик должен остановится. Но ничего не происходит.
Помогите пожалуйста, скажите почему не работает ? Коды прилагаются.

Страница :
PHP код:
<html>
<
head>
<
object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        
id="Flash_JS" width="400" height="200"
        
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
    <
param name="movie" value="recieve_send_flash_js_2.swf" />
    <
param name="allowScriptAccess" value="file:///Y:/home/delete/www/recieve_send_flash_2.html" />
    <
embed
        src
="recieve_send_flash_js_2.swf" 
        
name="Flash_JS" align="middle"
        
play="true" loop="false" quality="high" allowScriptAccess="file:///Y:/home/delete/www/recieve_send_flash_2.html"
        
width="400" height="200" scale="exactfit" 
        
type="application/x-shockwave-flash"
        
pluginspage="http://www.macromedia.com/go/getflashplayer">
    </
embed>
<
script>
function 
sendFromJS() {
//Остановка проигрователя.
    
window.document.movie.stop()
 }
</script>
</head>
<body>

<div id="js2flash">
<input type="button" id="button" value="стоп Flash" onclick="sendFromJS()" />
 </div>

</body>
</html> 
Actionscript Было в примере :
Код AS1/AS2:
import flash.external.ExternalInterface;
 
//устанавливаеv глобальную функцию recieveFromJS как обработчик JS-вызова sendFromJS.
ExternalInterface.addCallback("sendFromJS", null, recieveFromJS);
 
function recieveFromJS(msg) {
//Получаем данные и выводим на экран
	_root.txt.text = msg;
}
 
_root.button.onRelease = function() {
//Вызываем функцию на JS и передаем содержимое поля
	ExternalInterface.call("recieveFromFlash", _root.txt.text);
 
//Очищаем текстовое поле
	_root.txt.text = ""; }
Actionscript Стало :
Код AS1/AS2:
import flash.external.ExternalInterface;
 
//устанавливаеv глобальную функцию recieveFromJS как обработчик JS-вызова sendFromJS.
ExternalInterface.addCallback("sendFromJS", null, recieveFromJS);

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
1. Почему у вас в <object> имя флешкиного объекта
Код:
<param name="movie"
а в <embed>
Код:
name="Flash_JS"
?

Сделайте тогда тоже movie, иначе в разных браузерах флешкин объект в DOM-струкутре по разному поименуется, и JS-код для управления не везде сработает.

2. Как работает ExternalInterface.addCallback ?
Рассмотрим вашу запись:
Код AS1/AS2:
ExternalInterface.addCallback('sendFromJS', null, recieveFromJS);
Здесь вы регистрируете на HTML-странице для флешкиного объекта JS-метод по имени sendFromJS, при вызове которого из JS:
Код:
document.getElementById('movie').sendFromJS();
внутри флешки вызовется ее функция recieveFromJS.
Создайте такую функцию во флеше и пусть она будет делать то, что надо, например, останавливать плеер:
Код AS1/AS2:
function recieveFromJS()
{
 //некие действия по остановке плеера
}
То есть вот это
Код:
window.document.movie.stop()
не имеет никакого смысла в данном контексте.
И имя функции sendFromJS()
Код:
<script>
function sendFromJS() {
  ...
 }
</script>
желательно изменить, чтобы оно не совпадало с именем метода флешки sendFromJS(). Во избежании путаницы.
Лучше как-то так:
Код:
<script>
function manageFlash() {
   document.getElementById('movie').sendFromJS();
 }
</script>
и тогда
Код:
<input type="button" id="button" value="стоп Flash" onclick="manageFlash()" />
---------------
3. Есть еще одно соображение. Меня все же смущает ваша запись
Код:
window.document.movie.stop()
Просто в AS1/2 есть встроенный метод stop(), который останавливает текущий таймлайн.
Такое ощущение, что вы используете какой-то готовый плеер, в котором определен заказной метод stop(). Нехорошо это - в ряде случаев возможен конфликт, и даже я слышал о таком, если мне не изменяет память. Хотя метод объекта DOM-структуры (в роли которого выступает флешка) и встроенный метод внутри той же флешки - это разные вещи, какой-то браузер вроде бы тупил из-за этого.

PS. К "Серверным технологиям" контекст вашего вопроса отношения не имеет, это все взаимодействия на стороне клиента, то есть в браузере. Но путь пока тема будет здесь.
__________________
Идите первым!


Последний раз редактировалось mooncar; 15.08.2012 в 14:19.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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