Apache flex 如何在AS2或AS3中以自定义延迟播放多个声音?

Apache flex 如何在AS2或AS3中以自定义延迟播放多个声音?,apache-flex,flash,actionscript-3,audio,delay,Apache Flex,Flash,Actionscript 3,Audio,Delay,我需要实现一个多声道播放器。用户可以上传多首曲目并混合(一起播放)。我的问题是允许用户定义每个轨迹的精确起始位置,以允许它们之间的同步,类似于: 第一轨:从[x]秒开始 第2轨:从[y]秒开始 播放/停止 用户可以在其中设置x和y。我试着用AS2(使用netstream和setInterval)和AS3(使用netstream或sound和timer)来实现它。只有当我设置相同的x和y时,两首曲目才能同时播放。假设你有一个时间轴“引擎”,它有某种内部时钟。时钟的每一个“滴答声”都会检查一些包含轨

我需要实现一个多声道播放器。用户可以上传多首曲目并混合(一起播放)。我的问题是允许用户定义每个轨迹的精确起始位置,以允许它们之间的同步,类似于:

第一轨:从[x]秒开始

第2轨:从[y]秒开始

播放/停止


用户可以在其中设置x和y。我试着用AS2(使用netstream和setInterval)和AS3(使用netstream或sound和timer)来实现它。只有当我设置相同的x和y时,两首曲目才能同时播放。

假设你有一个时间轴“引擎”,它有某种内部时钟。时钟的每一个“滴答声”都会检查一些包含轨迹对象的数组或向量,看看它是否包含一个从时间线开始的起始时间为n滴答声的对象。或者更有效的方法是生成TrackObjs向量中存在的starttimes向量,并检查是否存在,然后如果找到一个,则运行TrackObjs向量并获取当时需要启动的所有音频

这里的滴答声可以是秒、十分之一、毫秒等等。 有关基于帧的计时,请参见org.casalib.time类

class Track() { var startTime:int; var trackName:String; var fileName:String; } 班级轨道(){ var startTime:int; var trackName:String; var文件名:字符串; } 对于多个混合声音的实际播放,有各种各样的LIB可能会为您完成大部分繁重的工作


这可能会为您提供一些有用的代码,尽管您可能需要将其与Gaia框架解耦。 也许更好:
Matt Przybylski的SoundManager课程
Guttershark SoundManager类

此外,这些可能对动态声音生成有意义:

“Flaudio是ActionScript 3的动态运行时音频生成和处理库”



“Popforge AS3音频库允许您使用自己的示例创建有效的flash.media.Sound对象。这为当前Adobe flash Player 9的声音设计打开了新的视角。您可以创建任何类型的合成器、效果和示例播放器。提供的AudioBuffer类允许您创建无休止的音频播放。”

为了清楚起见,用户在不同的时间启动两个声音。因此,它是:用户单击“播放”;单击播放X秒后,曲目1开始;单击播放后Y秒,曲目2开始?用一对netstream和一个计时器似乎很容易做到这一点。你能发布你的AS3代码吗?