1

我正在将 JQuery 与jQuery flash 插件一起使用,并尝试将 JS 调用发送回 flash,但我一直遇到“xxx 不是函数”,所以显然有些问题。我是 JQuery 的新手,对这个 jquery flash 插件也很陌生,只是不能完全理解我做错了什么。

这是我装闪光灯的地方:

<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 插件将Object标签注入到目标 div 中,因此您实际上需要使用 #tagflash 对象作为选择器来访问 flash 对象。

更新:确保您也通过调用操作脚本中的ExternalInterface类发布了该方法:

ExternalInterface.addCallback("gotoNewFrame", callFromJavaScript);

如果您想要做的只是在您的 Flash 电影第一次加载时调用一个方法,为什么不绑定到onLoad事件并gotoNewFrame在您的动作脚本中调用呢?当您调用该flash方法时,您刚刚将 tagNumber 作为参数传入,因此该值已经可用..

于 2010-03-16T17:03:52.443 回答
0

假设#tagflash确实存在(并且您的意思#tagimgback不是相反),您应该尝试一下。

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

这里不需要 jQuery。As$("#tagflash")返回一个 jQuery 对象(围绕真实 dom 元素的包装器),这是一个不需要的包装,只需花费 ;) cpu-time

于 2010-03-16T17:07:15.433 回答
0

我遇到了同样的问题,在 javascript 和 flash 之间触发和接收侦听器事件。

解决方案是使用 Adob​​e 的 AC_OETags.js 文件作为嵌入脚本而不是 JQuery flash。

当 flash 在浏览器中构建 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 回答