使用Javascript时未定义->;动作脚本

使用Javascript时未定义->;动作脚本,javascript,actionscript-3,Javascript,Actionscript 3,一定很晚了,但我没有看到我的错误。我只是想从JS调用一个AS3FX。代码: <script language="javascript"> function getFlashMovie(movieName) { var isIE = navigator.appName.indexOf("Microsoft") != -1; return (isIE) ? window[movieName] : document[movieName];

一定很晚了,但我没有看到我的错误。我只是想从JS调用一个AS3FX。代码:

<script language="javascript">
    function getFlashMovie(movieName) {   
      var isIE = navigator.appName.indexOf("Microsoft") != -1;   
      return (isIE) ? window[movieName] : document[movieName];  
    }
    getFlashMovie('myswf').playASound();
</script>

    <div id="flashContent">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1" height="1" id="myswf" align="middle">
            <param name="movie" value="myswf.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#ffffff" />
            <param name="play" value="true" />
            <param name="loop" value="true" />
            <param name="wmode" value="window" />
            <param name="scale" value="showall" />
            <param name="menu" value="true" />
            <param name="devicefont" value="false" />
            <param name="salign" value="" />
            <param name="allowScriptAccess" value="sameDomain" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="myswf.swf" width="1" height="1">
                <param name="movie" value="myswf.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="window" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="sameDomain" />
            <!--<![endif]-->
                <a href="http://www.adobe.com/go/getflash">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                </a>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
    </div>
谢谢

编辑:进度

这就是我现在所处的位置,仍然存在空对象问题:

<head>
<script type="text/javascript">
    var flashvars = false;
    var attributes = {
       id: "sounds",
       name: "sounds"
    };
    var params = {
       wmode: "transparent",
       menu: "false", 
       allowScriptAccess: "always",
       play: "true"
    };
    swfobject.embedSWF("file.swf", "flash-sound", "10", "10", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
    </script>
</head>
<body>
<div id="flash-sound"><!--<p>Alternative content</p>--></div>
      <script>
      $(document).ready(function(){
        document.getElementById('sounds').playSound();
    });

      </script>
</body>

var flashvars=false;
变量属性={
id:“声音”,
名称:“声音”
};
变量参数={
wmode:“透明”,
菜单:“假”,
allowScriptAccess:“始终”,
剧本:“真的”
};
嵌入swf(“file.swf”、“flash-sound”、“10”、“10”、“9.0.0”、“expressInstall.swf”、flashvars、params、attributes);
$(文档).ready(函数(){
document.getElementById('sounds').playSound();
});

错误是无法调用null的方法“playSound”

您得到的是未定义的,因为它在DOM中找不到您的swf

试着用这个代替那个“getFlashMovie”的东西

不要忘记将swf的id属性设置为“flashObj”

此外,我建议使用将swf嵌入html:

swfobject.embedSWF("boot.swf", "flash", "100%", "100%", "10.0.0", "assets/swf/expressInstall.swf", flashvars, params, attributes);

var flashvars = {lang: "<?php echo $lang ?>"};
var params = {allowFullScreen : false, allowScriptAccess: "always", bgcolor: "#FFFFFF", wmode: "transparent"};
var attributes = {id:"flashObj"};   
swfobject.embeddeswf(“boot.swf”、“flash”、“100%”、“100%””、“10.0.0”、“assets/swf/expressInstall.swf”、flashvars、params、attributes);
var-flashvars={lang::};
var params={allowFullScreen:false,allowScriptAccess:“始终”,bgcolor:#FFFFFF,wmode:“透明”};
var属性={id:“flashObj”};

考虑使用
document.getElementById
:该
getFlashMovie
将仅在某些浏览器(IE和Opera?)中工作AFAIK——问题是它(
getFlashMovie
)返回未定义的(因为它已绑定或DOM尚未加载;也就是说,尝试将脚本置于“加载”状态事件,或者至少在标记之后创建对象)。我已经编辑了注释,并取得了一些进展。还是不行!你加载jquery了吗?另外,不要让你的wmode透明,除非你真的必须这样做。
document.getElementById('flashObj').playASound();
swfobject.embedSWF("boot.swf", "flash", "100%", "100%", "10.0.0", "assets/swf/expressInstall.swf", flashvars, params, attributes);

var flashvars = {lang: "<?php echo $lang ?>"};
var params = {allowFullScreen : false, allowScriptAccess: "always", bgcolor: "#FFFFFF", wmode: "transparent"};
var attributes = {id:"flashObj"};