0

javaスクリプトからフレックス関数を呼び出すにはどうすればよいですか? 以下のリンクで定義されている以下のコードを使用しています

ExternalInterface.addCallback( "javascriptfunction", flexfunction);

http://www.switchonthecode.com/tutorials/flex-javascript-basics-using-externalinterface

http://circlecube.com/2010/12/actionscript-as3-javascript-call-flash-to-and-from-javascript/

4

2 に答える 2

0

flex 4.5

このように、最初に addcallback を mxml に追加します。

public function initApp():void {
        ExternalInterface.addCallback("myFlexFunction",myFunc);
}  

myFlexFunctionJavaScript からアクセスできるようになりました。

index.template.html を次のようにします

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>addCallback() Wrapper</title>
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
            var swfVersionStr = "0";
            var xiSwfUrlStr = "";
            var flashvars = {};
            var params = {};
            params.quality = "high";
            params.bgcolor = "#ffffff";
            params.allowscriptaccess = "sameDomain";
            var attributes = {};
            attributes.id = "AddCallbackExample";
            attributes.name = "AddCallbackExample";
            attributes.align = "middle";
            swfobject.embedSWF(
                "AddCallbackExample.swf", "flashContent",
                "100%", "100%",
                swfVersionStr, xiSwfUrlStr,
                flashvars, params, attributes);
        </script>
    </head>
    <SCRIPT LANGUAGE="JavaScript">
        function callApp() {
            window.document.title = document.getElementById("newTitle").value;
            var AddCallbackExample = document.getElementById("AddCallbackExample");
            AddCallbackExample.myFlexFunction(window.document.title);
        }
    </SCRIPT>

    <body>
        <form id="f1">
            Enter a new title: <input type="text" size="30" id="newTitle" onchange="callApp()">
        </form>
        <div id="flashContent"/>
   </body>
</html>

そして、このようなフレックスアプリケーション

<?xml version="1.0"?>
<!-- wrapper/AddCallbackExample.mxml -->
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="initApp()">
    <fx:Script>
        import flash.external.*;

         public function initApp():void {
            ExternalInterface.addCallback("myFlexFunction",myFunc);
         }  

         public function myFunc(s:String):void {
            l1.text = s;
         }
    </fx:Script>

    <s:Label id="l1"/>

</s:Application>

お役に立てれば

于 2012-04-24T12:33:28.180 に答える
0

問題に対してより多くのコンテキストを提供する必要があります。チュートリアルで読んだことから、コードへのセキュリティ アクセスの追加を省略した可能性があります。より正確にここを見てください: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#addCallback%28%29、特にここ:

SecurityError — 含まれている環境は、呼び出し元のコードがアクセスできないセキュリティ サンドボックスに属しています。この問題を修正するには、次の手順に従います。 HTML ページを含む SWF ファイルの object タグで、次のパラメータを設定します。

param name="allowScriptAccess" value="always" 

In the SWF file, add the following ActionScript:

flash.system.Security.allowDomain(sourceDomain)

それが役に立てば幸い。

于 2012-04-18T12:37:54.153 に答える