О, переместите External.addCallback ("sayWhat", sayWhat) из функции initCamera. Если это не поможет, я боюсь, что у меня нет идей.
аюсь вызвать функцию сценария вызова из JS, но получаю следующую ошибку
Error: getFlashMovie(swfobjectID).sayWhat is not a function
Может ли какое-либо тело дать мне знать, что я здесь делаю неправильно?
<html>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="myMovieName" WIDTH="225" HEIGHT="200">
<PARAM NAME="movie" VALUE="ax.swf" /> <PARAM NAME="quality" VALUE="high" /> <PARAM NAME="bgcolor" VALUE="#FFFFFF" /> <EMBED href="ax.swf" src="ax.swf" quality=high bgcolor=#FFFFFF NAME="myMovieName" ALIGN="" TYPE="application/x-shockwave-flash"> </EMBED> </OBJECT>
<script>
function getFlashMovie(movieName) {
alert("In get Flash Movie");
document.getElementById(movieName).setAttribute("name", movieName);
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName];
}
function sayWhat()
{
alert("In call as");
var swfobjectID = 'myMovieName';
alert(swfobjectID);
//call flex function
getFlashMovie(swfobjectID).sayWhat();
}
</script>
<input type="button" onclick="javascript:sayWhat();" value="Click Me" />
</html>
MXML
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initCamera()">
<mx:Script>
<![CDATA[
import mx.controls.Button;
import mx.controls.Alert;
import flash.display.InteractiveObject;
import flash.display.Sprite;
import flash.media.*;
import flash.net.*;
import flash.external.*;
import flash.external.ExternalInterface;
public function sayWhat():void {
Alert.show("Hi");
}
public function initCamera():void {
//stop();
ExternalInterface.addCallback("sayWhat", sayWhat);
}
]]>
</mx:Script>
</mx:Application>