2

私はこのJavaScriptコードを持っています:

<script type="text/javascript">
$(document).ready(function() {  
$("body").append('<div id="ajaxBusy" class="ajaxBusy"></div>');
</script>

私のコードはこれまでのところ正常に動作しますが、この JavaScript コードを AS3 内にロードすることを考えました。

それを実現する可能性はありますか?フラッシュ内にインライン JavaScript コードを記述するには。このコードを見つけましたが、実装方法がわかりません

import flash.external.ExternalInterface;

var someVarInAS : String = 'foo';
var someOtherVarInAS : int = 10;
var jsXML : XML = 
<script type="text/javascript">
    var someVarInJS = '{$("body").append('<div id="ajaxBusy" class="ajaxBusy"></div>');}';
    var someOtherVarInJS = '{$('#login').fadeIn();}';
    <![CDATA[       
        alert( 'this comes from flash: ' + someVarInJS + ', ' + someOtherVarInJS );
    ]]>
</script>;


ExternalInterface.call( "function js_" + ( new Date().getTime() ) + "(){ " + jsXML + " }" );

誰でもこれを行うのを手伝ってもらえますか?

4

1 に答える 1

2

ExternalInterfaceこれがどのように機能するかを示す例へのリンクです

https://dl.dropboxusercontent.com/u/15551758/eitest.zip

何が起こっているかというと、Flash オブジェクトがページに読み込まれると、

ExtenalInterface.call();

swfがオンになっているページに登録されているjavascript関数を呼び出します。例の場合:

ExternalInterface.call('toJS', 'flash text');

は JavaScript 関数toJSを呼び出し、1 つの引数 string を送信します"flash text"

反対方向もサポートされています。フラッシュ オブジェクトで関数を呼び出して引数を渡すと、それらがフラッシュに送信されます。以下を使用して、ExternalInterface コールバックを登録します。

ExternalInterface.addCallback(callback_name, flash_function_to_call);

この例では、フラッシュにコールバックを登録します。

ExternalInterface.addCallback("fromJS", this.fromJS);

呼び出された JavaScript からのイベントをリッスンしfromJS、内部関数を呼び出しますfromJS。例として、ステージにテキストボックスを追加して、javascript からのデータを視覚化しました。

これがあなたの質問に答えているかどうか、またはさらに説明が必要な場合はお知らせください。

編集:

JavaScript を注入する必要がある場合は、注入を行う関数を の最初のパラメーターとして渡すことができますExternalInterface.call

var inject:String = "function(){var body = document.getElementsByTagName('body')[0], testNode = document.createElement('div'); testNode.innerHTML = 'This is a test'; body.appendChild(testNode);}";
ExternalInterface.call(inject);

しかし、私はそれに対してお勧めします。言語を分けておくと、コードがより簡潔になり、デバッグが容易になります。

于 2013-06-26T20:32:49.170 に答える