2011-12-19 4 views
0

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

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

ответ

2
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()); 
} 
+0

Или в ActionScript, вы можете использовать 'ExternalInterface.addCallback ('rotateCam', NULL, rotateCam);' работать с текущим яваскриптом кодом. – Diode

+0

Хм, спасибо за это. В следующий раз я, вероятно, должен прочитать код немного осторожнее – Alex