【问题标题】:jquery flash externalinterfacejquery flash 外部接口
【发布时间】:2013-03-11 09:27:15
【问题描述】:

我现在已经很绝望了。

我正在尝试像这里的许多其他人一样让外部接口的东西与我的页面一起使用。 不管我做什么或如何以正确的方式更改代码,我总是会收到来自 firefox 或 chrome 的 '没有方法' 报告!

我正在尝试通过 jQuery 在 HTML 中使用“播放”链接触发 Flash 中的播放功能。不知道怎么回事!

Flash CS6中的AS3.0(播放声音文件-在Flash中没问题,播放正常):

import flash.external.ExternalInterface;

ExternalInterface.addCallback("playMusicJS", playMusic);

function playMusic(evt:MouseEvent):void {
  soundChannel.stop();
  soundChannel = sound.play();
  soundTimer.start(); // volume levels and time
  INSTPlayPause.gotoAndStop(2);
  soundChannel.addEventListener(Event.SOUND_COMPLETE, soundComplete);
  INSTPlayPause.INSTPauseBTN.addEventListener(MouseEvent.CLICK, pauseMusic);
}

Javascript (jQuery):

$(document).ready(function() {
  $('#play').click(function() {
    // var flash = document.getElementById("ASPlayer"); // tried as well - no luck
    var flash = $('#ASPlayer').get(0)
    flash.playMusicJS();
    alert("TEST");
  });
});

和 HTML:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="350" height="30"     id="ASPlayer" title="Player">
  <param name="movie" value="../_flash/TEST -ExternalInterface-.swf">
  <param name="quality" value="high">
  <param name="wmode" value="opaque">
  <param name="swfversion" value="11.0.0.0">
  <param name="expressinstall" value="../_flash/expressInstall.swf">
  <param name="allowScriptAccess" value="always" />
  <!--[if !IE]>-->
  <object type="application/x-shockwave-flash" data="../_flash/TEST -ExternalInterface-.swf" width="350" height="30" id="ASPlayer" title="Player">
    <!--<![endif]-->
    <param name="quality" value="high">
    <param name="wmode" value="opaque">
    <param name="swfversion" value="11.0.0.0">
    <param name="expressinstall" value="../_flash/expressInstall.swf">
    <param name="allowScriptAccess" value="always" />
    <!-- -->
    <embed src="../_flash/TEST -ExternalInterface-.swf" width="350" height="30" name="ASPlayer" quality="high" wmode="opaque" >
    <!-- -->
    <div>
      <p>Content on this page requires a newer version of Adobe Flash Player.</p>
      <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" width="112" height="33" /></a></p>
    </div>
    <!--[if !IE]>-->
  </object>
  <!--<![endif]-->
</object>
<p><a href="#" id="play">play</a></p>
</body>
<script type="text/javascript" src="TEST.js"></script>
</html>

我认为可能是DOM加载顺序问题,我尝试了很多组合调用函数的顺序或文档中放置文件的位置,但也没有运气!

我也检查了其他用户关于该问题的大多数条目并尝试了它们,但仍然没有工作! 我感谢任何想法或提示:)!

来自德国柏林的良好祝愿!

【问题讨论】:

    标签: javascript jquery flash externalinterface


    【解决方案1】:
    1. 确保您的脚本被拉入页面,检查的一种方法是使用 Chrome 调试器/FireFox Firebug 中的“源”选项卡并搜索文件。

    2. 确保在包含 jQuery 之后再包含脚本,因为它肯定依赖于它。

    3. 确保您只包含了一个 jQuery 库。包含多个版本可能会导致问题。

    4. 如果有其他库覆盖$,那么您的代码将无法正常工作,因为$ 不再是jQuery 的别名。您可以使用jQuery.noConflict() 来避免与页面上使用相同变量$ 的其他库发生冲突。

    【讨论】:

    • 感谢您的快速回答! 1.我的脚本在那里,当我在jQuery函数中放置一个警报时,它会弹出。 2.脚本包含在页面底部。 3.页面顶部仅包含一个jQuery库'jquery.1.8.3.min.js'。 4.没有其他图书馆。也许还有其他想法(希望如此)?
    • 感谢大顺的努力!我现在使用 swfObject 让它工作!但我仍然想知道,为什么它不适用于“老派”实施......!
    猜你喜欢
    • 2011-01-09
    • 2010-10-25
    • 2010-10-23
    • 2011-06-20
    • 1970-01-01
    • 2012-02-06
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多