I know that there are lots of articles and forum post about this question and lots of them are not working and remained unanswered. Some tutorials claimed that their code works, but some of them does not have download page and some of them with download page, the link does not work. Also, perhaps there's a new way of doing this and the code that I found is no longer supported.
Here is my code:HTML and Javascript
<html>
<head><title>Javascript to SWF</title>
<script language="JavaScript">
function getFlashMovie(movieName) {
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName];
}
function callToActionscript()
{
getFlashMovie("jscallswf").setMouseXY();
}
callToActionscript();
</script>
</head>
<body style="background:red;">
<body>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="450" id="jscallswf" align="middle" data="jscallswf.swf" style="height: 250">
<param name="allowScriptAccess" value="sameDomain">
<param name="allowFullScreen" value="false">
<param name="movie" value="jscallswf.swf">
<param name="quality" value="High"><param name="bgcolor" value="#ffffff">
<embed src="jscallswf.swf" quality="High" bgcolor="#ffffff" width="400" name="jscallswf" align="middle" allowscriptaccess="sameDomain" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" style="height: 250">
</object>
</body>
</body>
</html>
AS3 code:
import flash.external.ExternalInterface;
ExternalInterface.addCallback("setMouseXY", rotateCam);
function rotateCam()
{
td.text = "NEWTEXT";
}
Here is another Javascript approach:
<html>
<head><title>Javascript to SWF</title>
<style type="text/css">
#jscallswf {
margin:300px;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"> </script>
<script type="text/javascript" src="swfobject.js"></script>
<script language="JavaScript">
// JS Code
// Embedding through SWFObject rocks in comparison with Adobe's garbage:
var flashvars = {};
var params = {};
params.menu = "false";
params.salign = "t";
params.scale = "noscale";
params.wmode = "transparent";
params.allowScriptAccess = "always";
var attributes = {};
attributes.id = "jscallswf";
swfobject.embedSWF("jscallswf.swf", "flashDiv", "274", "246", "9.0.0", "", flashvars, params, attributes);
// Functions needed for calling Flex ExternalInterface
function thisMovie(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1)
{
return window[movieName];
}
else
{
return document[movieName];
}
}
function callFlashMethod()
{
thisMovie("jscallswf").setMouseXY();
}
$(document).ready(function(){
callFlashMethod();
});
</script>
</head>
<body style="background:red;">
<body>
<div id="flashDiv" style="margin:200px;"></div>
</body>
</body>
</html>
Both returning error in console "Uncaught TypeError: Cannot call method 'setMouseXY' of undefined"