1

jQuery フラッシュ プラグインでJQuery を使用していて、JS コールをフラッシュに送り返そうとしています。私はJQueryが初めてで、このjqueryフラッシュプラグインも初めてで、自分が間違っていることに頭を悩ませることはできません。

これが私がフラッシュを積み上げているところです:

<div id="tagimgback">
<script language="javascript">
$(document).ready(function(){
$('#tagflash').flash(
    {
      src: 'tagflash',
      width: 200,
      height: 200,
      flashvars: {theYear:'2010',theTagNumber:'123'}
    },
    { version: 8 }
);

});
</script>
</div>

そして、ここで私はそれを呼び出そうとしています:

$("#tagflash").gotoNewFrame(theTagNumber);

gotoNewFrame はフラッシュ内の AS 関数です。jQueryをミックスに取り入れる前にテストできたので、関数が機能することはわかっています。

4

3 に答える 3

4

$('#tagflash')要素ではなく、jQuery オブジェクト セットを返します。

(jQuery オブジェクトでサポートされているメソッドの代わりに) オブジェクトでカスタム メソッドを呼び出したい場合は、次のように、まずjQuery オブジェクトの Get メソッドを呼び出してオブジェクトを取得する必要があると思います。

var flashWrapper = $('#tagflash object');  // returns a jQuery object set
var flashObject = flashWrapper.get(0);     // should return your flash element object
flashObject.gotoNewFrame(theTagNumber);

jQuery Flash プラグインがターゲット div にタグを挿入するように見えることに注意してください。そのObjectため、実際には #tagflash オブジェクトをセレクターとして使用して、フラッシュ オブジェクトにアクセスする必要があります。

更新:アクション スクリプトでもExternalInterfaceクラスへの呼び出しを介してメソッドを公開したことを確認してください。

ExternalInterface.addCallback("gotoNewFrame", callFromJavaScript);

Flash ムービーが最初にロードされたときにメソッドを呼び出すだけなら、onLoadイベントにバインドしてgotoNewFrame、アクション スクリプト内で呼び出してみませんか? メソッドを呼び出したときにパラメーターとして tagNumber を渡したflashので、値は既に使用可能です。

于 2010-03-16T17:03:52.443 に答える
0

JavaScriptとフラッシュの間でリスナーイベントを起動して受信するという同じ問題が発生しました。

解決策は、JQuery フラッシュの代わりに Adob​​e の AC_OETags.js ファイルを埋め込みスクリプトとして使用することでした。

フラッシュがブラウザで JavaScript コールバックを構築するときの競合状態に基づく問題。これは、何らかの理由でストレート埋め込みでは正しく処理されません。

<div>
<script>
// Major version of Flash required
var requiredMajorVersion = 10;
// Minor version of Flash required
var requiredMinorVersion = 0;

var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
AC_FL_RunContent(
"src", "tagflash",
    "width", "200",
    "height", "200",
    "id", "myTagFlash",
    "quality", "high",
    "bgcolor", "#FFFFFF",
    "name", "myTagFlash",
    "allowScriptAccess","allways",
    "type", "application/x-shockwave-flash",
    "pluginspage", "http://www.adobe.com/go/getflashplayer",
    "flashvars", "templateData=theYear:2010&theTagNumber:123"
);
</script>
</div>

次に、次のことができます:(IE、FF、Safari、Crome、++で動作します)

$("#tagFlash").gotoNewFrame();
于 2011-04-18T10:47:37.097 に答える
0

実際に存在すると仮定して (代わりに#tagflashという意味ではありません)、これを試してみてください。#tagimgback

document.getElementById("tagflash").gotoNewFrame(theTagNumber);

ここでは jQuery は必要ありません。As$("#tagflash")は jQuery オブジェクト (実際の dom 要素のラッパー) を返します。

于 2010-03-16T17:07:15.433 に答える