2010-07-06 39 views
4

我的flex 3.5应用程序有一个音频播放器,其内容通过调用AMF服务来获取mp3数据。据我所知,flash.media.Sound初始化为URLRequest,所以它不是很清楚,我怎么可以用我的RemoteObject它提供的数据。如何使用Flex调用AMF服务并取回MP3?

我想要做下面的事情之一:

  1. 提供数据Sound对象从RemoteObject服务调用load方法。
  2. 创建URLRequest对象,将进行必要的AMF包装,使我服务的实现将完全一样,如果在所有可能的任何其它服务呼叫。
  3. 任何替代方案都允许我调用PHP4 AMF服务并播放它在Flash音频播放器中返回的音频。

回答

0

为什么不使用带有URL参数的Sound对象?

无需编写代码来手动检索您的网址。如果您希望在返回文件之前执行一些后端处理,则可以将返回mimetype和“转储”mp3文件的数据字节设置为输出流。

使用ColdFusion,这是很容易使用cfcontent标签。我假设PHP提供了一些并行,但我不知道它是什么。

+0

权。这正是我描述的方式,并不是我想要的。为了争论起见,我们只是说我需要 - 如果不是实际的AMF调用 - 大量的其他POST数据来获取此数据。 – 2010-07-07 02:19:10

+1

你原来的帖子中没有任何地方给我留下这样的印象:这种方法“不太合适”。也许我是误解。如果您需要发布帖子,一种解决方案是使用HTTPService执行psot并返回mp3网址。另一种解决方案可能是将“post”值转换为URL变量并按原样使用Sound对象。 – JeffryHouser 2010-07-07 10:52:17

3

如果你绝对必须使用AMF服务的声音,你有两个选择。第一种方法是将MP3包装成swf格式,并将其作为ByteArray发回,并使用Loader上的loadBytes方法将其加载回去。第二种方法是将其转换为wav,将其作为ByteArray发送,然后解析音频文件并使用sampleData事件将数据提供给声音(仅限Flash Player 10)。我可能会推荐第一个选项,因为它比第二个选项更容易和更快,但都不是特别容易。

如果我不得不通过AMF来验证加载声音,我会返回一些类型的会话cookie,并设置了一个简单的PHP服务,将服务的MP3与适当的会话cookie。