MeanMatt
MeanMatt

Reputation: 1605

Javascript throws error when trying to send var to AS3 ExternalInterface

I know there have been tons of questions about this topic already but none of them have solved my issue, perhaps I am just missing something.

Anyways, here is the deal. I have a happy little html5 game that plays some audio and sound affects etc and it works great in every browser that supports html5. However, those that don't require a flash fallback. No big deal right? Apparently not… I've made a small swf that should accept the mp3 url from JS and then get the mp3 and play it. I have to use this way as there are a lot of audio files and I would like to try and avoid making a swf file for each one.

Here is the AS - I'm using the ExternalInterface to receive the variable from js.

 import flash.external.*;

 ExternalInterface.addCallback("callFlash", playSound); 

 function playSound(file:String):void {
    var s:Sound = new Sound();
    s.load(new URLRequest(file));

    s.play();
 }

And then my JS to pass the variable:

 var flash = $('#fbplayer')[0];
 console.log(flash); //returns flash object so jquery is not the issue
 flash.callFlash(fallSource);

So theoretically everything should work fine (if I understand ExternalInterface correctly). However, the following error is thrown:

 TypeError: flash.callFlash is not a function
 flash.callFlash(fallSource);

I can't seem to find where the issue was. I'm open to any answers or even a completely different way of doing this. As long as it works as this is holding up the delivery of the project :C

Thanks!

Upvotes: 0

Views: 503

Answers (1)

Robert Smith
Robert Smith

Reputation: 385

I know this is really old, but I've never had success finding my flash objects properly with jquery. It's better to go with a getElementById. Also, one other crazy thing I ran into with some modern browsers just a couple months ago is that I actually needed to tell flash to wait a frame after initializing any callbacks via ExternalInterface.

Upvotes: 1

Related Questions