2011-12-19 11 views
0

ExternalInterfaceを使用して関数を呼び出す際に問題があります。ExternalInterfaceを使用してFlash関数を呼び出す

<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のコードです:

まず第一に、ここではHTML/JS側です

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); 

このステートメントは、 "setMouseXY"のコールバック関数として "rotateCam"を追加します。だから "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)を使用することができます;' 現在のjavascriptのコードで動作するように。 – Diode

+0

ええ、ありがとう。おそらく次回はもっと慎重にコードを読むべきでしょう – Alex

関連する問題