【问题标题】:AS3: Sound.play() stops animation, why?AS3:Sound.play() 停止动画,为什么?
【发布时间】:2011-02-13 01:50:07
【问题描述】:

我有一个使用几个 AS3 脚本的 Flash 电影。主舞台有一些动画正在进行。当我单击一个按钮时,我的 player.as 会播放一些 mp3 剪辑。问题是,一旦声音开始,舞台动画就会停止,即。 Sound.play() 开始,然后当声音结束时动画再次开始。

动画是基于

this.addEventListener(Event.ENTER_FRAME,loop3D);

所以我收集到由于 Sound.play() 导致 ENTER_FRAME 发生了一些事情。奇怪的是,一切都在 Flash 测试影片中完美运行(ctrl+Enter)。声音期间动画不会停止。如何确保动画始终播放?

【问题讨论】:

  • 还有代码可以看吗?
  • 我不知道在这里粘贴什么相关。我注意到的是,如果我只是注释掉 1: mysound.play(pos) 或 2: sndarray[current].play( ),如果按下按钮 1 或 2 会发生这种情况,这完全消除了问题。然后我仍然可以在按下按钮后在现场网站上欣赏动画。但是当然然后根本没有声音。所以我把它固定在 .play() 上。动画是一个 .computeSpectrum 的东西,对声音做出 3D 反应。请注意,它在离线时,在测试电影上运行良好。
  • 我现在可以进一步调试它:如果我在 .computeSpectrum 所在的同一 .as 上播放声音,动画甚至可以在线工作。所以这不是动画停止的问题,而是来自另一个 .as 的声音 ByteArray 没有正确传递的问题(奇怪的是,无论是做测试电影还是在线都有区别)。所以,这个bytes = new ByteArray(); 可能会出错。如果 Sound.play(); 在同一个脚本上,这可以工作,但是如果声音来自另一个 .as,如何让它工作?
  • SoundMixer.computeSpectrum(bytes, true, 4); 不接受另一个 .as 可能存在某种安全问题,因此动画只是在另一个 .as 文件播放声音时出现。一种解决方案是将我所有的 .as 合并到主类中,但这对我来说是一项艰巨的工作,而且听起来很愚蠢。我只想在一个.swf 中计算Spectrum,所有声音都在一个相同的.swf 中产生!如何在类之间传递(或混合)音频字节?
  • 发现如果我同时在另一个选项卡中打开 YouTube 视频,它也会在 Firefox 中停止。我将其确定为错误。但是,即使遇到 Firefox YouTube 问题,我也真的很想让它工作。肯定有人用单独的 .as 类制作了一个频谱分析仪来播放声音?

标签: actionscript-3


【解决方案1】:

同时播放声音和动画并没有固有的问题,组合(无论多么大)数量的类文件也没有问题 - 你还有另一个问题。一定是有错误导致 Flash 播放器暂停执行 ActionScript,而且很可能是其中之一:

  1. security sandbox violation

  2. IO error 或与播放尚未完成加载的内容有关的问题。

  3. loading classes from a separate SWF相关的问题。

  4. 导致null pointer exception 的其他问题。

要调试它,首先检查您的 flashlog.txt。如果你没有,set up the Flash content debugger plugin。看看抛出了什么错误代码,从那里继续。

【讨论】:

  • 非常感谢,这对我帮助很大。我发现了两件事,这确实是一个安全沙盒问题。令人讨厌的是,访问 www.mysite.com 时实际上并不存在问题。我一直在 mysite.com 上调试,没有 www 前缀。仅当省略 www 时才会存在安全问题。我尝试了各种方法,但找不到这个新问题的答案。如何在没有 www 前缀的情况下允许同一网站的完整沙盒权限?
  • 允许从 *.mysite.com 访问
  • 是的,这就是我想做的。如何?至少Security.allowDomain("*"); 不起作用。
  • 设置一个crossdomain.xml。此外,您嵌入 swf 的 HTML 可能需要 allowScriptAccess="always"。检查这个:kb2.adobe.com/cps/403/kb403183.html
  • 再次感谢您。我很高兴也能获得 crossdomain.xml 的示例,但当然我也可以自己尝试弄清楚。我找到了几个例子,但它们彼此完全不同,我不知道哪一个适合这个简单的目的。尽管我尝试了几件事,但我也不知道将文件放在哪里以及将什么添加到文档类中。
猜你喜欢
  • 2021-03-16
  • 1970-01-01
  • 2020-08-07
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2021-12-17
相关资源
最近更新 更多