Показать сообщение отдельно
Старый 08.04.2010, 15:01
s3dworld вне форума Посмотреть профиль Отправить личное сообщение для s3dworld Найти все сообщения от s3dworld
  № 1  
Ответить с цитированием
s3dworld

Регистрация: Apr 2010
Сообщений: 170
Attention Как из JavaScript вызвать Flash-функцию

Всем доброго дня!

Собственно вопрос понятен из названия темы. Решил создать тему, так как я с самого утра уже весь Yandex перерыл. Нашёл несколько реализаций, но так и ничего не заработало. Возможно что-то делаю не так, посмотрите...

Я хочу создать свой сайт. Вот создал ButtonGreen.swf, исходный код которой:

Код AS3:
package s3dworld.gui
{
    import flash.system.Security;
    import flash.text.TextField;
    import flash.events.MouseEvent;
    import flash.display.MovieClip;
    import flash.external.ExternalInterface;
 
    public class ButtonGreen extends MovieClip
    {
        private var isEnable:Boolean=false;
        private var isDown:Boolean=false;
 
        private var backFunction:Function=null;
 
        public var textCaption:TextField=null;
 
        // Конструктор
        public function ButtonGreen()
        {
            gotoAndPlay("isDisable");
 
            Security.allowDomain("sameDomain");
 
            if(ExternalInterface.available)
            {
                try
                {
                    ExternalInterface.addCallback("jsEnable",Enable);
                }
                catch(error:SecurityError)
                {
                    // Ошибка безопасности
                }
                catch(error:Error)
                {
                    // Ошибка
                }
            }
            else
            {
                // Не поддерживается
            }
        }
 
        // Получение состояния
        public function GetEnable():Boolean
        {
            return isEnable;
        }
 
        // Включение
        public function Enable():void
        {
            if(isEnable) return;
 
            addEventListener(MouseEvent.MOUSE_OUT,onMouseOut);
            addEventListener(MouseEvent.MOUSE_OVER,onMouseOver);
            addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
            addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
 
            gotoAndPlay("onMouseOut");
 
            isEnable=true;
            isDown=false;
        }
 
        // Отключение
        public function Disable():void
        {
            if(!isEnable) return;
 
            removeEventListener(MouseEvent.MOUSE_OUT,onMouseOut);
            removeEventListener(MouseEvent.MOUSE_OVER,onMouseOver);
            removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
            removeEventListener(MouseEvent.MOUSE_UP,onMouseUp);
 
            gotoAndPlay("isDisable");
 
            isEnable=false;
            isDown=false;
        }
 
        // Установка функции обратного вызова
        public function SetFunction(_function:Function):void
        {
            backFunction=_function;
        }
 
        // Установка текста
        public function SetText(_text:String):void
        {
            textCaption.text=_text;
        }
 
        // Наведение
        private function onMouseOut(event:MouseEvent):void
        {
            gotoAndPlay("onMouseOut");
            isDown=false;
        }
 
        // Увод
        private function onMouseOver(event:MouseEvent):void
        {
            gotoAndPlay("onMouseOver");
            isDown=false;
        }
 
        // Нажатие
        private function onMouseDown(event:MouseEvent):void
        {
            gotoAndPlay("onMouseDown");
            isDown=true;
        }
 
        // Отпускание
        private function onMouseUp(event:MouseEvent):void
        {
            gotoAndPlay("onMouseOver");
 
            if(isDown && backFunction!=null) backFunction();
 
            isDown=false;
        }
 
    }
}
А вот и страничка index.html:

Код:
<html>

<head>
<title>Сборка фантазий</title>

<style>

table
{
    border-collapse:collapse;
}

</style>

<script type="text/javascript">
<!--
    // Получение клипа
    function getMovie()
    {
        var M$ = navigator.appName.indexOf("Microsoft")!= -1
        return (M$ ? window : document)["button1"]
    }
    
    // Инициализация
    function Init()
    {
        var movie=getMovie();
        
        movie.jsEnable();
    }
//-->
</script>

</head>

<body onLoad="Init()">
<table width="100%" border="0" cellpadding="0" cellspacing=0>
    <tr>
        <td colspan="4" align="center" bgcolor="#339900">Fantasy Assembly</td>
    </tr>
    <tr>
        <td colspan="4" valign="top" bgcolor="#336600">&nbsp;</td>
    </tr>
    <tr>
        <td width="16%" height="425" valign="top"><table width="100%" border="0">
            <tr>
                <td align="center" valign="top">Навигация</td>
            </tr>
            <tr>
                <td align="center">Главная</td>
            </tr>
            <tr>
                <td align="center">Статьи</td>
            </tr>
            <tr>
                <td align="center">Проекты</td>
            </tr>
            <tr>
                <td align="center">Автор</td>
            </tr>
        </table></td>
        <td colspan="3" valign="top"><p>Область</p>
        <p>
            <object"
                classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
                codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0"
                name="button1"
                width="110"
                height="20"
                id="button1">
                <param name="movie" value="ButtonGreen.swf">
                <param name="quality" value="high">
                <param name="allowScriptAccess" value="sameDomain"/>
                <embed
                    src="ButtonGreen.swf"
                    width="110"
                    height="20"
                    quality="high"
                    allowScriptAccess="sameDomain"
                    pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"
                    type="application/x-shockwave-flash"
                    name="button1">
                </embed>
            </object>
        </p></td>
    </tr>
    <tr>
        <td colspan="4" align="center" bgcolor="#339900">2010 &copy; Дубровкин Сергей</td>
    </tr>
</table>
</body>

</html>
Но что-то нет ожидаемого результата. Что я делаю не так? Может нужно адрес сайта писать, хотя я его писал. Не помогло.

Помогите, пожалуйста.