我怎样才能克服&ndquo; NPObject上的错误调用方法”和Play()一个SWF?

我正在研究测验系统。通常它会在每个问题中使用jpeg图像。但是,一些测验改为使用动画.SWF文件。一旦用户点击了答案,我想使用jquery swfobject来调用play()方法。 我的解决方案在本地工作正常,但是当我尝试在线运行时,它会抛出“NPObject上的错误调用方法!”信息。 测验HTML位于www.somedomain.com上,SWF位于images.somedomain.com上。所以,我猜这是一个跨领域的事情。 麻烦的是,我对Flash一无所知......如何编辑SWF文件,任何有关Flash属性的内容等。 这是我的代码示例:
<div class="photos">
    <object data="http://images.somedomain.com/q1tattooquiz.swf" type="application/x-shockwave-flash" width="600" height="350">
        <param name="movie" value="http://images.somedomain.com/q1tattooquiz.swf">
        <param name="wmode" value="opaque">
    </object>
</div>
和javascript:
if (hasFlash) {
    $('#question'+quesNum+' .photos').flash(function() { this.Play(); } );
    }
这很简单,正如我所说,它在我的电脑上运行良好。但一旦上传,就会出错。 我可以将哪些内容添加到我的javascript中以使这些文件正常工作?     
已邀请:
Kirkman14, 除了allowScriptAccess之外,确保使用正确数量的参数调用函数,匹配AS声明。如果您的AS声明:
function playSound(event:MouseEvent):void{
// code here
}
然后确保相应地使用该功能
playSound(null)
。 我自己也经历过这个。     
我认为没有办法避免改变SWF。你需要将这一行放在Flash中:
flash.System.Security.allowDomain('*');
只需要你试图从JS调用SWF中的函数。对于相反的方向,还要将allowScriptAccess设置为始终在嵌入代码中。请注意,如果我没记错的话,这个参数可能区分大小写。     
您可以尝试将allowscriptaccess设置为“always”。 allowscriptaccess与示例代码中的wmode是同一种参数。     
有人建议我创建crossdomain.xml文件,将闪存与之通信的域列入白名单。虽然我没有取得任何成功(但也许我的问题与你的不同)。     
对我来说,这个问题出现了,因为在Flex中,我将静态设置为一个带有ExternalInterface调用的函数。如果问题函数是静态的,请尝试撤消它。     

要回复问题请先登录注册