Запустить функцию ActionScript (в объекте Flash) из JavaScript - PullRequest
2 голосов
/ 24 мая 2011

У меня есть приложение flash (AS2.0) с функцией, которую мне нужно вызвать из ссылки HTML-формы Функция flash запускает только gotoAndPlay («имя метки»); Так что мой HTML
<a href="" id="flashTrigger" />

и моя функция вспышки

  
function myFunction(){
  gotoAndPlay("myLabel");
}

Кто-нибудь знает, как я могу запустить функцию flash из тега html-ссылки, ИЛИ запустить «gotoAndPlay» из функции Javascript

Iv огляделся и, похоже, нашел способ запустить функцию javascript из flash

Вот код, который у меня пока есть - я, вероятно, делаю что-то глупое
Вспышка:

ExternalInterface.addCallback( "myExternalMethod", this, myFunction );

function myFunction(){
gotoAndPlay("fade");
}

Javascript

function executeFlash()
{
  getObjectById("myFlashID").myExternalMethod(); 
}

function getObjectById(objectIdStr) {
        var r = null;
        var o = document.getElementById(objectIdStr);
        if (o && o.nodeName == "OBJECT") {
            if (typeof o.SetVariable != undefined) {
                r = o;
            }
            else {
                var n = o.getElementsByTagName(OBJECT)[0];
                if (n) {
                    r = n;
                }
            }
        }
        return r;
    }

$(function() {

    $('#WhatDoesmean').click(function(){
        executeFlash();
    });

});

Я установил myFlashID с идентификатором:
начальный «тег объекта» и IE только «встраивать тег»

EDIT: На данный момент я нацеливаюсь на объект вспышки нормально, это не работает внешняя (сторона вспышки) - сообщение об ошибке, myExternalMethod не является функцией

Ответы [ 4 ]

1 голос
/ 24 мая 2011

Для этого вы можете использовать внешний интерфейс:

В этом месте есть рабочий пример:

Flash to JS: http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001655.html

JS для Flash: http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001653.html

Надеюсь, это поможет

Приветствия

0 голосов
/ 26 мая 2011

Мне удалось решить проблему с помощью SWFObject

Доступ к методу flash-объектов был прост через SWFObject.js, однако без него он просто не работал. Хотя не уверен почему.

Все вышеперечисленные предложения работают с SWFObject.js, но ни одно из них не работает без него

Приветствия ко всем предложениям

Andy

0 голосов
/ 24 мая 2011

Я использовал это несколько лет назад для захвата флеш-объекта:

var flashObj = getFlash("Flash_Name");

function getFlash(movieName)
{
if (window.document[movieName])
{
    return (window.document[movieName]);
}
if (navigator.appName.indexOf("Microsoft Internet")==-1)
{
    if (document.embeds && document.embeds[movieName])
    {
        return (document.embeds[movieName]);
    }
}
else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
{
    return (document.getElementById(movieName));
}
}

Тогда flashObj.gotoAndPlay(); должно работать

0 голосов
/ 24 мая 2011

В вашем флеш-файле добавьте обратный вызов:

//**updated**
if (ExternalInterface.available)
{
    trace("ExternalInterface= " + ExternalInterface.available);
    flash.external.ExternalInterface.addCallback("myExternalMethod", null, myFunction);
}

function myFunction()
{
    gotoAndPlay("myLabel");
}

В вашем javascript:

function executeFlash()
{
 //**updated**
  alert('JS call works fine!');
  getObjectById("myFlashID").myExternalMethod(); // myFlashID = your SWF object ID
}

function getObjectById(objectIdStr) {
        var r = null;
        var o = getElementById(objectIdStr);
        if (o && o.nodeName == "OBJECT") {
            if (typeof o.SetVariable != UNDEF) {
                r = o;
            }
            else {
                var n = o.getElementsByTagName(OBJECT)[0];
                if (n) {
                    r = n;
                }
            }
        }
        return r;
    }

В вашем HTML (укажите вашему SWF-объекту, встроенному в ваш HTML, id = myFlashID):

<a href="" id="flashTrigger" onclick="executeFlash()" />

Здесь вы найдете документацию для ExternalInterface http://flash -reference.icod.de /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...