Как узнать что мышка вышла за пределы ролика(ExternalInterface)

Как узнать что мышка вышла за пределы ролика(ExternalInterface)

В данном уроке мы рассмотрим пример взаимодействия javascript и Flash. И узнаем как с помощью javascript узнать момент выхода/входа курсора за пределы флеш ролика. Приступим:

Создаём новый ActionScript3 проект:

И сразу сохраним его под именем FlashAndJS.

Далее создаем динамическое текстовое поле и настраиваем его как на картинке:

В InstanceName текстового поля пишем respond_txt.

Должно получится примерно следующее:

Создаём ещё один слой и называем его Actions. Нажимаем на нём F9 и пишем код:

//импортируем класс ExternalInterface
import flash.external.ExternalInterface;
//разрешаем доступ к ролику из любого домена
Security.allowDomain("*");
//регистрируем функцию для яваскрипта при наведении на ролик
ExternalInterface.addCallback("over", over);
//регистрируем функцию для яваскрипта при уведении курсора с ролика
ExternalInterface.addCallback("out", out);
function over(){
 respond_txt.text="Курсор над роликом";
}
function out(){
    respond_txt.text="Курсор не над роликом";
}

Теперь компилируем ролик с HTML страницей и с прозрачным фоном, иначе в браузере FF будет не корректно работать..

Теперь исправим HTML:

между тегами HEAD вставляем яваскрипт:

<script language="javascript">
var flashVideoPlayer;
function initialize(){
var isIE = navigator.appName.indexOf("Microsoft") != -1;
flashVideoPlayer = (isIE)?window['ff']:document['ff'];
}
function over(){
flashVideoPlayer.over();
function out(){
flashVideoPlayer.out();
}</script>

Смотрите чтоб имена в этой строке("ff"):

flashVideoPlayer = (isIE)?window['ff']:document['ff'];

совпадали с:

в теге OBJECT:

id="ff"

в теге EMBED :

name="ff"

Теперь в тег BODY нужно вставить

onload="initialize();"

Далее в тегах OBJECT и EMBED изменить значение параметра allowScriptAccess c someDomain на always !

OBJECT:

<param name="allowScriptAccess" value="always" />

EMBED:

allowScriptAccess="always"

И в теге OBJECT нужно вставить javascript-слушатели onmouseover и onmouseout с вызовом функций соответственно.

<object onmouseover="over();" onmouseout="out();" classid=..

Вот итоговый код HTML страницы:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r" />
<title>flashAndJS</title>
<script language="javascript">
var flashVideoPlayer;
function initialize(){
var isIE = navigator.appName.indexOf("Microsoft") != -1;
flashVideoPlayer = (isIE)?window['ff']:document['ff'];
}
function over(){
flashVideoPlayer.over();
}
function out(){
flashVideoPlayer.out();
}
</script>
</head>
<body onload="initialize();">
    <object onmouseover="over();" onmouseout="out();" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="300" height="200" id="ff" align="middle">
    <param name="allowScriptAccess" value="always" />
    <param name="allowFullScreen" value="false" />
    <param name="wmode" value="transparent"/>
    <param name="movie" value="flashAndJS.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#cc0000" />    <embed src="flashAndJS.swf" wmode="transparent" quality="high" bgcolor="#cc0000" width="300" height="200" name="ff" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="https://www.adobe.com/go/getflashplayer" />
    </object>
</body>

Вот и всё..

Исходник: 

Похожие записи

Комментарии

Аватар пользователя switcher

Молоток!
радуешь нас связкой JS+Flash.
Заверните

popcorn

<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя Fiker

Хорошая штука пригодится

Аватар пользователя Aloran

Классный урок Серега!!!! Ток вот понять немогу зачем эту функцию делать через яву, когда можно одним АС все зделать))))

Аватар пользователя SarGun

Цитата: Aloran

Ток вот понять немогу зачем эту функцию делать через яву, когда можно одним АС все зделать))))

ну этот урок в первую очередь показывает как общатся с ActionScript через javascript.

Через АС3 то можна сделать(АС2 - нет), в данной ситуации!!Но бывают случаи когда надо в определённый момент , например, передать какието данные в ActionScript..

 

Аватар пользователя switcher

Серега, а есть тема - с помощью JS передать координаты мыши вне флэша относительно расположения объекта самого flash? Может не напрямую, а сопоставляя абсолютные координаты мыши и flash.
Например, определить никому не видимую (и НЕ нарушающую отображение страницы) на заднем фоне зону чувствительности и регистрации по координатам - перемещения мыши.

scratch

<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя rb

Сделайте урок видео плейера ,плиз.

derisive

Аватар пользователя SarGun

Цитата: switcher

Серега, а есть тема - с помощью JS передать координаты мыши вне флэша относительно расположения объекта самого flash?

 

координаты мыши легко узнать ну и просто вызывать функцию и передавать координаты в ней флешу...

если я правильно твой вопрос понял)

Аватар пользователя Nike

Ссылки битые.