0

私はHTMLの初心者なので、助けていただければ幸いです。

HTML JS と埋め込まれた SWF の間で通信したいと考えています。動作する Flash から html の JS 関数を呼び出すことができます。しかし、JS から Flash にコールバックできません。

コードを最小限に抑えましたが、まだ成功していません。AS3のコードは次のとおりです。

package
{
import flash.events.Event; 
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.external.ExternalInterface;


public class CFacebook extends Sprite
{
    public function CFacebook()
    {
        init();
    }

    private function init():void
    {
        ExternalInterface.addCallback("myFlashcall",myFlashcall); 
        btn1.addEventListener(MouseEvent.CLICK, onClick1); 
        btn2.addEventListener(MouseEvent.CLICK, onClick2); 
    }

    public function myFlashcall(str:String):void
    {
        txtDebug.text = "myFlashcall = " + str;
    }

    protected function onClick1(event:MouseEvent):void
    {
        ExternalInterface.call("myFBcall1"); 
    }

    protected function onClick2(event:MouseEvent):void
    {
        ExternalInterface.call("myFBcall2"); 
    }

}
}

これはすべて機能します - 呼び出されないコールバックを除いて。ここに私のHTMLがあります:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Simple Flash Embed</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script type="text/javascript" >
function myFBcall1()
{
    alert("test1");
}

function myFBcall2()
{
    document.getElementById("SwfFacebook").myFlashcall("IT WORKS");
    alert("test2");
}
</script>

</head>
<body>
<object type="application/x-shockwave-flash"
data="SwfFacebook.swf"
width="640" height="480">
<param name="movie" value="SwfFacebook.swf" />
<param name="allowScriptAccess" value="always"/>
<param name="allowFullScreen" value="true"/>
<p>Alternative content -- Can contain any HTML: DIVs, IMGs, etc.</p>
</object>
</body>
</html>

最初のボタンをクリックすると、最初の ALERT が表示されます。2 番目の ALERT が表示されず、SWF のコールバック関数が呼び出されません。

感謝を込めて

4

1 に答える 1