2011-06-01 26 views
0

它必須遲到,但我沒有看到我的方式的錯誤。我只是試圖從JS調用AS3 FX。代碼:未定義使用Javascript - > Actionscript

<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> 

在AS3中調用相同的方法播放聲音,所以我知道聲音播放。控制檯給我以下錯誤:

Uncaught TypeError: Cannot call method 'playASound' of undefined 

謝謝!!

編輯RE:進展...

這是我在哪裏,現在,仍然有一個空對象問題:

<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> 

和錯誤是無法調用空的「playSound」

+0

考慮使用'document.getElementById':那'getFlashMovie'只會somebrowsers(IE和Opera?)工作AFAIK - 問題在於它('getFlashMovie')*返回*未定義(因爲它是borked的或者DOM尚未加載;也就是說,嘗試將腳本放在「on load」事件中,或者至少*在*之後標記來創建對象)。 – 2011-06-01 04:37:13

回答

0

你會得到undefined,因爲它無法在DOM中找到你的swf。

嘗試使用這個而不是 「getFlashMovie」 -thing

document.getElementById('flashObj').playASound(); 

不要忘記設置您的SWF爲 「flashObj」的id屬性。

另外,我建議使用swfobject嵌入您的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"}; 
+0

我編輯了一些進展的評論。仍然沒有工作壽! – panzhuli 2011-06-01 14:57:31

+0

你加載jQuery嗎?另外,不要讓你的wmode透明,除非你真的必須這樣做。 – ThomasM 2011-06-03 08:33:34