Javascript to flash communication

11,002

Solution 1

I'm not familiar with the Swiff plugin, but you don't need a plugin to call flash functions from Javascript. It's even easier to do it natively.

From AS:

//1. calling javascript function from Flash.
ExternalInterface.call("sendData",tempStr);
// argument 1: javascript function, argument 2: data/variables to pass out.
//2. calling javascript function from Flash with recursion.
var returnValue:String = ExternalInterface.call("sendReturn",tempStr).toString();
//3. setting up a callback function for javascript
ExternalInterface.addCallback("callFlash",flashResponse);
// argument 1: function name called by javascript, argument 2: function on the Flash side.
// AS2 version looks like this : ExternalInterface.addCallback("callFlash",null,flashResponse);

From JS:

//1. javascript function as called from Flash.
function sendData(val){
    alert(val);
    document.flashForm.flashOutput.value = val;
}

//2. javascript function with recursion.
function sendReturn(val){
    var tempData = "Hello from JS";
    return tempData + ' :return';
}

//3. calling Flash function with javascript.
function sendToFlash(val){
    window['flash'].callFlash(val);
}

Solution 2

Ah, here is the answer to you problem.

<form>
    <input type="button" onclick="callExternalInterface(id)" value="Call ExternalInterface" />
</form>
<script>
function callExternalInterface(id) {
    thisMovie("externalInterfaceExample").callAS(id);
}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}
</script>

SO if the client is Internet Explorer, you should be fetching the movie from the document object. :-)

Share:
11,002
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin about 2 years

    I am trying to call a Actionscript function from javascript but I am having problems in Internet Explorer. I am using Swiff.remote in mootools 1.2.1 to call the actionscript function ie:

    Swiff.remote(playSwf.toElement(), 'sendResult', result, plays, name);
    

    This all works fine in FireFox, Safari and Opera but I'm getting an "unspecified" error in Internet Explorer 6 and 7. I have tried using the bog standard:

    window['flash'].sendResult(result, plays, name);
    

    To no avail.

    Thanks for any help. Mark