Question

I'm using swf object to embed a swf. I'm trying to user external interface to to call a flash function from JS, but having trouble. I've searched all the docs, read a ton of stuff, and I'm convinced I'm doing it right. Can anyone point out where the problem might be?

        var flashvars = {}; 
        var params = {wmode:"opaque", allowscriptaccess:"always" }; 
        var attributes = {id:"MySwf",  name:"MySwf"};
        swfobject.embedSWF("MySwf.swf", "flashContent", "600", "400", "9.0.0", "swfs/expressInstall.swf", flashvars, params, attributes,function(e){
            if(e.success){
                _flashRef = e.ref;
                testExternalInterface();                    
            }else{
                alert("We are sorry, flash is required to view this content.");
            }
        });
       function testExternalInterface(){        
              var swf = document.getElementById("MySwf");
              swf.sendMeTheGoods("TEST TEST");
    };

Above is the embed code and js function in my flash I have

        if (ExternalInterface.available)
        {
            trace("adding external interface");
            ExternalInterface.addCallback("sendMeTheGoods", sendMeTheGoods);
        }
    public function sendMeTheGoods(text:String):void
    {
        trace("setting vars")
        trace(text);
        txtYouSent.text = text;
    }

I'm getting the error Uncaught TypeError: Object # has no method 'sendMeTheGoods'

I've tried both referenceing document.getElementById("MySwf"); and document.getElementById("flashContent"); and I get the error both ways. Any suggestions?

Was it helpful?

Solution

the external interface API is not immediately available, it takes a second for it to be ready. your callback is likely happening before Flash Player has initialized the EI API. try adding a delay in the callback, delaying the invocation of your 'test' function.

OTHER TIPS

var swf = navigator.appName.indexOf("Microsoft") != -1 ? window["MySwf"] : document["MySwf"];

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top