【发布时间】: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