1

JQuery と SWF オブジェクト プラグインを使用しながら、単純なフラッシュ mp3 プレーヤーを作成しようとしています。次のコードを使用してページに swf を追加しています。

$("body").append("<div id='player_external' style='position:absolute;top:0;left:0;height:1px;width:1px;'></div>");
$('#player_external').flash({swf:"player_external.swf",wmode:"transparent",height:1,width:1,AllowScriptAccess:"always"});

プレーヤーは、javascript とやり取りする非表示の 1 ピクセル オブジェクトである必要があります。フラッシュオブジェクト内から(を使用して)javascript関数を呼び出すと、正常ExternalInterface.call()に動作します。

しかし、JavaScript から ActionScript 関数を呼び出そうとしても、何も起こりません。次のようなコールバック関数を追加しました。

ExternalInterface.addCallback("MyFunc",MyFunc);

そして、インターネットで見つけたすべての可能な方法を試しました。お気に入り:

$('#player_external').context.MyFunc();
$('#player_external').flash("MyFunc()"); //this just crashes browser!

また、解決策は次のとおりです: How can I call an Actionscript function when the .swf is referenced by jQuery? 役に立ちません。私はこれで希望を捨てました。JQuery の助けを借りずにフラッシュを使用する方が良いかもしれません。しかし、これを行うには何らかの方法があるはずです。

ありがとう。

4

3 に答える 3

2

id パラメータを追加するだけで、Flash オブジェクトに直接アクセスできます。

$('#my_container').flash({
    swf: 'swf/test.swf',
    width: 740,
    height: 110,
    wmode: 'transparent',
    allowScriptAccess:'always',
    id:'my_flash',
    flashvars: {}
});

// Use document.getElementById NOT $("#my_flash") 
document.getElementById("my_flash").myInternalFlashFuctionName('Foo');
于 2011-11-17T13:41:48.857 に答える
2

試す$('#player_external').get(0).MyFunc();

于 2010-10-01T09:49:13.367 に答える
0

使用$('#myContent').get(0).method()するとうまくいきます。配列参照を使用して最初のアイテムを取得することもできます。$('#myContent')[0].method()

「動的な」swfobject インジェクションを使用しています。

于 2010-10-02T02:44:44.033 に答える