4

JS を使用して、ExternalInterface を使用して Flash AS2.0 音楽プレーヤーにデータを送信しようとしていますが、ExternalInterface に関する適切なチュートリアルやガイドを見つけることができません。JavaScript リンクをクリックしてプレーヤーの現在の曲を変更し、クリックせずにページ/ウィンドウの読み込み時にデフォルトの曲を再生できるようにしたいと考えています。

フラッシュなどでサウンドをロードする際に非常に複雑な答えは必要ありません.JSに何かをフラッシュに送信させるのに多くの困難があり、それが機能するようになったら- if / elseリンクがクリックされたかどうかを判断するためのフラッシュ?

ありがとう

現在のコードを編集します。

AS2.0

import flash.external.ExternalInterface;

ExternalInterface.addCallback('loadSong', null, flashFunction);

function flashFunction (val) {
    extra = val;
}

JavaScript

var flashObj = document.getElementById('VSPLAYER');

function loadSong(val) {
    return val
}

HTML

<a href="javascript:loadSong('2')">Play song 2</a>

<object id="VSPLAYER" type="application/x-shockwave-flash" data="vs_player.swf" width="280" height="90">
<param name="movie" value="vs_player.swf" />
<param name="allowscriptaccess" value="always" />
</object>
4

2 に答える 2

9

Flash で、できれば最初のフレームに、次のように記述します。

ExternalInterface.addCallback('callFlashFunction', null, yourFlashFunction);

function yourFlashFunction (arg1, arg2) { ... }

Javascript では、次の方法で呼び出すことができます。

var flashObj = document.getElementById ('FlashObjID');
flashObj.callFlashFunction (arg1, arg2);

SWF が別のドメインにある場合は、次の方法でスクリプト アクセスを許可することを忘れないでください。

<object id="FlashObjID"> ... <param name="allowscriptaccess" value="always" /> ... </object>

更新 (HTML に基づく):

<a href="#" onclick="return jsLoadSong('2')">Play song 2</a>

<object id="VSPLAYER" type="application/x-shockwave-flash" data="vs_player.swf" width="280" height="90">
    <param name="movie" value="vs_player.swf" />
    <param name="allowscriptaccess" value="always" />
</object>

<script type="text/javascript">
    var flashObj = document.getElementById ('VSPLAYER');
    function jsLoadSong (val)
    {
        flashObj.loadSong (val);
        return false; // to prevent default link action
    }
</script>

どれが Javascript にあり、どれが Flash に関連付けられているかを示すために、名前を明確にしようとしました。また、defining を呼び出す前に、DOM がロードされるまで待つ必要があることに注意してくださいflashObj。ここでは、<script>タグは の後にある<object>ので、問題なく動作します。

于 2010-01-07T08:36:23.223 に答える
1

投稿していただきありがとうございますが、はい、その JavaScript 呼び出しは私にとっても有効ではありませんでした。いろいろいじくり回した後、最終的には次のように動作するようになりました:

$(this)[0].loadSong();  

(flashObj が既に選択されている jQuery を使用)

これが誰かに役立つことを願っています。

jQueryを使用していない場合、[0]が必要かどうかわかりません。

セレクターの配列の最初のスロットで実際の HTML DOM オブジェクトが選択されていることを別の場所で読んでください。申し訳ありませんが、私の説明は少し初心者です。それが機能するのに役立つことを願っています。

于 2012-03-22T07:25:32.170 に答える