[]使用UrlLoader加载图片,flash获取data为byteArray,翻译成h5后data为image?

package
{
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.utils.ByteArray;

public class UrlImage extends Sprite
{
private var urlLoader:URLLoader;
private var l:Loader;
public function UrlImage()
{
super();
if(stage)
{
init();
}
else
{
this.addEventListener(Event.ADDED_TO_STAGE,init);
}
}
private function init(e:Event=null):void
{
urlLoader=new URLLoader();
urlLoader.dataFormat=URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(Event.COMPLETE,onImageLoaded);
urlLoader.load(new URLRequest("screen.png"));
}

private function onImageLoaded(event:Event):void
{
// TODO Auto-generated method stub
trace(event.target.data is ByteArray)
var ba:ByteArray=event.target.data as ByteArray;
l=new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE,onImage2Loaded);
l.loadBytes(ba);
urlLoader.removeEventListener(Event.COMPLETE,onImageLoaded);
urlLoader=null;
}

protected function onImage2Loaded(event:Event):void
{
// TODO Auto-generated method stub
var bitmap:Bitmap=event.target.content as Bitmap;
addChild(bitmap);
l.contentLoaderInfo.removeEventListener(Event.COMPLETE,onImage2Loaded);
l=null;
}
}
}
as下输出true
js下输出false
已邀请:

cuixueying

赞同来自:

  是这样的。
  原生用UrlLoader加载一张图片最终获取的是event.target.data为byteArray。
  layaFlash下使用UrlLoader加载一张图片最终获取的是一个显示对象的Image。
  这个差异问题,我们目前考虑的原因是byteArray在加速器端涉及到缓存图片还原可能会出问题,所以单张图片的加载没有和原生一样返回byteArray。
  如果你仅仅是要获取该张图片的byteArray数据,可以尝试把图片格式的后缀名(譬如.png)去掉,这样程序会把没有后缀名的图片当做一个文件去加载,最终获取的event.target.data就是一个byteArray了
 
  
 

要回复问题请先

商务合作
商务合作