0

更新:回答しました!

6月7日-私は答えを見つけて、以下を受け入れました。私はこのコードを保持しているので、他の人が私が抱えていた問題を確認でき、おそらく彼らは何が機能し、何が機能しなかったかを知ることができます。


古い投稿:

as3でjQuery関数を呼び出す方法を理解しました:as3でjQuery関数を呼び出す

しかし、jQueryがas3関数を呼び出す方法を知りたいと思います。何かご意見は?

更新:まだ修正されていません-何が欠けていますか?

これが私のjQueryのコードです

 function BeGone()
  {
      var flash = $("#BeauFullScreen");
      flash.myFunction();
       $("#Content").show();


  }

これが私のas3のコードです

import flash.external.*;
function callMe() 
{ 

    var bParts = Beau.content as MovieClip;
    bParts.Beau.BeauBody.LeftWing.gotoAndStop(1);
    bParts.Beau.BeauBody.RightWing.gotoAndStop(1);
    bParts.alpha = .5;

} 
ExternalInterface.call("myFunction", callMe);

私の埋め込みフラッシュオブジェクトコード:

<div id="flashContentABOVE">
            <object classid="33" width="100%" height="100%" id="BeauFullScreen" align="middle">
                <param name="movie" value="BeauFullScreen.swf" />
                <param name="quality" value="best" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="transparent" />
                <param name="scale" value="noscale" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="sameDomain" />
                <!--[if !IE]>-->
                <object type="application/x-shockwave-flash" data="BeauFullScreen.swf" width="100%" height="100%" id="BeauFullScreen">
                    <param name="movie" value="Jesus.swf" />
                    <param name="quality" value="best" />
                    <param name="bgcolor" value="#ffffff" />
                    <param name="play" value="true" />
                    <param name="loop" value="true" />
                    <param name="wmode" value="transparent" />
                    <param name="scale" value="noscale" />
                    <param name="menu" value="true" />
                    <param name="devicefont" value="false" />
                    <param name="salign" value="" />
                    <param name="allowScriptAccess" value="sameDomain" />
                <!--<![endif]-->
                    <a href="http://www.adobe.com/go/getflash">
                        <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                    </a>
                <!--[if !IE]>-->
                </object>
                <!--<![endif]-->
            </object>
        </div>
4

4 に答える 4

1

これは、それを使用する方法についての簡単な説明とともに、そうするための素敵な小さなプラグインです

http://www.davecomeau.net/blog/56/jQuery+Plugin%3A+externalInterface

お役に立てば幸いです。

より詳細な回答は次のとおりです。

*あなたのhtmlページで*

1IDが「flashMovie」のフラッシュを含むdivを作成します

2テスト用のボタンを作成しますクリックして外部インターフェイスを呼び出します(成功コールバック付き)

3 jquery、query.externalinterface.js、swfobjectへの必要な参照を追加することを忘れないでください(swオブジェクトに置き換える必要があります)

<script type="text/javascript" src="/javascript/jquery/jquery-1.3.2.js"></script>
<script type="text/javascript" src="/javascript/jquery/jquery.externalinterface.js"></script>
<script type="text/javascript" src="/javascript/swfobject/swfobject.js"></script>

4ボタンがクリックされるとフラッシュオブジェクトを呼び出すJavaScript関数を追加します

<script type="text/javascript">

swfobject.embedSWF('/flash/externalInterfaceExample.swf', 'flashMovie', '238', '155', '10.0.0');

function interfaceTest()
{
    $('#flashMovie').externalInterface({
        method:'flashMethodToCall',   // this method has to be already defined in your flash object
        args:'some arguments',
        success: function(response)
        {
            alert('flash says: ' + response);
        },
        error: function(error)
        {
            alert('error: ' + error);
        }
    });
}
 </script>

*アクションスクリプト内**

import flash.external.*;

function someMethod() 
{ 
// Here goes your code
} 
ExternalInterface.addCallback("flashMethodToCall", someMethod); 
于 2012-06-07T00:46:53.140 に答える
1

単純な(jQuery以外の)ソリューションの1つは、を使用してFlash内でセットアップすることexternalInterface.addCallbackです。次に、jQuery/Javascript内のどこからでも呼び出すことができます。Javascriptでフラッシュオブジェクトを識別するには、フラッシュオブジェクトの名前とIDを指定する必要があることに注意してください。

于 2012-06-07T01:55:30.097 に答える
1

まず、JS / jQueryコードでは、小さな更新が必要です。

function BeGone()
  {
      var flash = $("#BeauFullScreen").eq(0); //change here
      flash.myFunction();
       $("#Content").show();
  }

次に、Asctionscriptで:

import flash.external.*;
function callMe() 
{ 

    var bParts = Beau.content as MovieClip;
    bParts.Beau.BeauBody.LeftWing.gotoAndStop(1);
    bParts.Beau.BeauBody.RightWing.gotoAndStop(1);
    bParts.alpha = .5;

} 
ExternalInterface.addCallback("myFunction", callMe); //change here
于 2012-06-07T08:09:06.860 に答える
1

私のために働いた答え!

3つの重要な要素を追加する必要がありました!

1)以下は、jQueryがas3と通信し、as3内の関数を呼び出すために必要なコード行です。

function BeGone()
{
$("#BeauFullScreen").get(0).myFunction(); /// THIS LINE WAS THE KEY!    
}

2) swfObjectjavascriptも追加する必要がありました。

<script> src="swfObject.js"></script>

3)**最後に、質問で上記のようにDreamweaverがコードを挿入する方法ではなく、JavaScriptを使用してSWFを埋め込む必要がありました。以下の埋め込みJavaScriptコード。

    <script>
    var flashvars = {
    };
    var params = {
        menu: "false",
        scale: "noScale",
        wmode: "transparent", // added this to no avail
        allowFullscreen: "true",
        allowScriptAccess: "always",
        bgcolor: "",

    };
    var attributes = {
        id:"BeauFullScreen"
    };
    swfobject.embedSWF(
        "BeauFullScreen.swf", 
        "flashContent", "100%", "100%", "10.0.0", 
        "expressInstall.swf", 
        flashvars, params, attributes);
</script>

これが誰かに役立つことを願っています。皆さんの素晴らしい努力に感謝します!

于 2012-06-08T00:21:45.633 に答える