I tried to call a flash callback method from JavaScript. But it seems not working. The flash action script example code is like below [Simplified]:
import flash.events.ActivityEvent;
import flash.events.StatusEvent;
import flash.external.ExternalInterface;
var test_var = ExternalInterface.addCallback("js_method_to_call", flash_method);
function flash_method()
{
return "test";
}
The javascript example code is written below [Simplified]:
function callFlashMethod(){
var flashFile = eval("window.document.test");
flashFile.js_method_to_call;
}
function loadTest(){
swfobject.embedSWF("test.swf", "test", "1", "1", "10.0.0", false);
}
$(document).ready(function(){
loadTest();
callFlashMethod();
});
It is always display the error in fire bug console "flashFile.js_method_to_call is not a function".
Here's something that should work really good:
Use SWFObject.js for embedding the Flash content:
// Embedding through SWFObject rocks in comparison with Adobe shits:
var flashvars = {};
var params = {};
params.menu = "false";
params.salign = "t";
params.scale = "noscale";
params.wmode = "transparent";
params.allowScriptAccess = "always";
var attributes = {};
attributes.id = "${swf}";
swfobject.embedSWF("${swf}.swf", "flashDiv", "${width}", "${height}", "9.0.0", "", flashvars, params, attributes);
Use this for the HTML:
<body>
<div id="flashDiv"></div>
</body>
To call your Flash method use this pattern:
// Functions needed for calling Flex ExternalInterface
function thisMovie(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1)
{
return window[movieName];
}
else
{
return document[movieName];
}
}
Call the Flash method:
function callFlashMethod()
{
thisMovie("${swf}").js_method_to_call();
}