我在通过使用ExternalInterface调用函数时遇到麻烦。

首先,这是HTML / JS方面:

<p align="right">
<object type="application/x-shockwave-flash" data="camera.swf"
width="200" height="200" align="right" id="camSWF">
<param name="movie" value="camera.swf" align="right" />
<param name="allowScriptAccess" value="always" />
</object></p>
<script type="text/javascript">
var flashObj = document.getElementById('camSWF');
document.onmousemove = setMouseXY;
function setMouseXY(e) {
    var x = e.pageX;
    var y = e.pageY;
    flashObj.rotateCam(x, y, $(document).width(), $(document).height());
}
</script>


其次,这是ActionScript 2代码:

ExternalInterface.addCallback('setMouseXY', null, rotateCam);
function rotateCam(mouseX, mouseY, docWidth, docHeight)
{
    // DO STUFF
}


据我所知,一切都应该正常工作,但显然我缺少了一些东西。

每当在HTML页面上触发鼠标事件时,我都会在Firebug中收到以下错误消息:

flashObj.rotateCam is not a function:
flashObj.rotateCam(x, y, $(document).width(), $(document).height());


我很困。也许这是一些安全的事情?

最佳答案

ExternalInterface.addCallback('setMouseXY', null, rotateCam);


该语句将“ rotateCam”添加为“ setMouseXY”的回调函数。因此,“ setMouseXY”是必须从javascript中调用的函数。

function setMouseXY(e) {
    var x = e.pageX;
   var y = e.pageY;
   flashObj.setMouseXY(x, y, $(document).width(), $(document).height());
}

10-05 20:49
查看更多