Вызов функции Flash с использованием ExternalInterface - PullRequest
0 голосов
/ 19 декабря 2011

У меня проблемы с вызовом функции с использованием 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());

Я застрял. Возможно, это какая-то вещь безопасности?

1 Ответ

2 голосов
/ 19 декабря 2011
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());
}
...