浏览代码

fixed loadBitmap reusing wrong data

ncannasse 10 年之前
父节点
当前提交
6e9103110a
共有 1 个文件被更改,包括 8 次插入3 次删除
  1. 8 3
      hxd/fmt/pak/FileSystem.hx

+ 8 - 3
hxd/fmt/pak/FileSystem.hx

@@ -107,19 +107,24 @@ private class PakEntry extends FileEntry {
 
 	override function loadBitmap( onLoaded ) {
 		#if flash
+		if( openedBytes != null ) throw "Must close() before loadBitmap";
+		open();
+		var old = openedBytes;
 		var loader = new flash.display.Loader();
 		loader.contentLoaderInfo.addEventListener(flash.events.IOErrorEvent.IO_ERROR, function(e:flash.events.IOErrorEvent) {
 			throw Std.string(e) + " while loading " + path;
 		});
 		loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, function(_) {
+			if( openedBytes == null ) {
+				openedBytes = old;
+				close();
+			}
 			var content : flash.display.Bitmap = cast loader.content;
 			onLoaded(new hxd.fs.LoadedBitmap(content.bitmapData));
 			loader.unload();
 		});
-		var op = openedBytes != null;
-		if( !op ) open();
 		loader.loadBytes(openedBytes.getData());
-		if( !op ) close();
+		openedBytes = null;
 		#else
 		super.loadBitmap(onLoaded);
 		#end