Actionscript:如何确定某些加载内容的类型?

时间:2009-01-06 16:47:17

标签: flex actionscript-3

我有一种情况,我使用URLLoader加载一些内容,但内容可以是视频(flv或swf)图像(jpg或png或gif)或swf。诀窍是,我需要根据加载的内容类型以不同的方式做出反应,而不必事先知道它是什么类型的内容。

我目前已经编造了一个精心设计的解决方案(详细说明我的意思是一系列令人困惑的if语句和try ... catch块),试图将其加载到控件中并捕获错误(例如:我会创建一个Image实例,为ioError事件添加一个事件监听器并且收到它我认为它不是图像或swf ...)但它看起来像是一个黑客。

是否有任何干净的方法来确定URLLoader中加载内容的类型?

4 个答案:

答案 0 :(得分:1)

您可能应该查看标头以确定文件类型。

e.g。所有SWF文件如果被压缩,应以0x46,0x57,0x53(“FWS”)或0x43,0x57,0x53(“CWS”)开头。

这些是URLLoader.data数组中的字节0到2。

答案 1 :(得分:1)

查看:http://code.google.com/p/as3httpclient/wiki/Links以确定响应标头。我将它用于其他目的并且效果很好。

答案 2 :(得分:0)

遗憾的是,如果您没有使用AIR,那么您(至少今天)不会访问HTTP响应(即URLLoader.httpResponseStatus)标头。所以你的“炮制”方法(我实际上已经用过了!)可能是暂时适合的方式,就像之前的海报一样。

看起来在Adobe上存在一个未解决的问题:

http://bugs.adobe.com/jira/browse/FP-251

......所以至少就是这样。 :)

答案 3 :(得分:0)

可能像

switch(your_request.url.split('.')[1]){
  case 'jpg':
  case 'swf':
}