georgich ([info]borodin) wrote,

JavaScript и Flash

Задача. Вызов из Javascript методов Flash и наоборот.

Используя эти способы, javascript может получить доступ к буферу обмена ОС, хранимым объектам SharedObject, управлять flash-интерфейсами и многое другое.

Связь JS с объектом Flash Какой бы способ коммуникации мы не выбрали, JS должен уметь находить объект Flash на странице.
Для того, чтобы все работало кроссбраузерно, Flash-ролик нужно вставить с использованием специального шаблона:
<object 
id="BridgeMovie" width="400" height="200"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param name="movie" value="bridge.swf" />
<param name="allowScriptAccess" value="sameDomain" />
<embed
src="bridge.swf"
name="BridgeMovie" align="middle"
play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
width="400" height="200" scale="exactfit"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
</object>
  1. Имя ролика BridgeMovie дублируется как object.id и embed.name.
  2. Путь к ролику bridge.swf дублируется в object/embed
  3. Параметр allowScriptAccess="sameDomain"
  4. Дублируются размеры ролика
Теперь объект ролика можно получить из window["BridgeMovie"] для IE или document["BridgeMovie"] в остальных браузерах:
function getMovie() {
var M$ = navigator.appName.indexOf("Microsoft")!=-1
return (M$ ? window : document)["BridgeMovie"]
}

Flash вызывает Javascript
getURL

Самый древний, знакомый большинству флешеров способ - это вызов javascript-функции посредством getURL с протоколом javascript:
getURL('javascript:функция("параметры");');
  • Работает во всех броузерах
  • Flash 5 и выше
  • Прост в применении
  • Не возвращает результат
  • Длина передаваемой строки ограничена 508 символами.

fsCommand

Вызов осуществляется так:
fsCommand("функция", "параметры")
Чтобы принять этот вызов, в Javascript должна быть специальная обвязка.
Редактор Flash может сгенерировать ее автоматически при публикации ролика. Для этого нужно в Publish Settings:
  1. Во вкладке Formhats включить публикацию html-файла
  2. Во вкладке HTML выбрать Template: Flash with FSCommand
Генерируемый шаблон javascript-обвязки состоит из двух частей.

Функция обработки fsCommand

Название функции имеет вид <ИмяРолика>_DoFSCommand. В нашем случае это BridgeMovie_DoFSCommand

Первый аргумент - имя вызываемой функции, второй - строка аргументов.
Простейший вариант выглядит так:

function BridgeMovie_DoFSCommand(command, args) {
                // вызвать функцию command с аргументом args
                window[command].call(null, args)
                }

Получится цепочка вызовов:
  1. (Flash) fsCommand("show","something")
  2. (JS) BridgeMovie_DoFSCommand(command,("show","something")
  3. (JS) show("something")
Пример и исходники Вы сможете найти на этой странице: http://javascript.ru/unsorted/bridge-flash
Tags: flash, javascript

  • Post a new comment

    Error

    Your IP address will be recorded 

  • 1 comments

Anonymous

January 9 2011, 05:45:40 UTC 1 year ago

секс знакомства без авторизации

http://vkontakte.ru/id118346125
г оренбург интим знакомства
знакомства мамба архангельск
секс знакомства в ишимбае (http://vkontakte.ru/id118346125)
[url=http://vkontakte.ru/id118346125]секс знакомства краматорск[/url]
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…