2009/06/24 | 1:59 am

ZipされたJPEGを扱う(複数)

別件で忘れてましたが、とりあえず、暫定的な処理になりますが、
こんな感じで解凍を確認したので。。。

まず、ZipLoader はやめて、nochump.util.zip.*; を使用しました。
Unknown Quality の ll_koba_ll さんが、分かりやすく書かれていたのでそれを参考に。


ref Unknown Quality – ActionScript 3.0 でZIPの圧縮と解凍

↓ ZIP圧縮した「uploads」フォルダに画像が何枚か入ってる想定です。

package
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.utils.ByteArray;

	import nochump.util.zip.*;

	public class MultiZipLoader extends Sprite
	{

		private var byteArray:ByteArray;
		private var loader:Loader;

		private var idx:int = 0;
		private var lg:Number = 0;
		private var bmpArray:Array = [];

		public function ZipLoaderMulti()
		{
			var uLoader:URLLoader = new URLLoader();
			uLoader.dataFormat = URLLoaderDataFormat.BINARY;
			uLoader.addEventListener( Event.COMPLETE, zipLoadComplete );
			uLoader.load( new URLRequest("uploads.zip") );
		}

		private function zipLoadComplete(e:Event):void
		{
			trace("zipファイルのロード完了");
			byteArray = e.target.data;
			var zip:ZipFile = new ZipFile( byteArray );

			for( var i:int = 0; i < zip.size; i++ ) {
				var entry:ZipEntry = zip.entries[i];
				var zipData:ByteArray = zip.getInput( entry );

				// 余計なものが入らないようにする
				if( zipData.length != 0 && zipData.bytesAvailable > 0) {
					lg++;

					loader = new Loader();
					loader.contentLoaderInfo.addEventListener( Event.COMPLETE, getBitmapData );
					loader.loadBytes( zipData );
				}
			}
		};

		private function getBitmapData( e:Event ):void
		{
			trace("BitmapData のロード完了");
			bmpArray[idx] = Bitmap( e.target.content );
			idx++;
			if( idx == lg ) display();
		};

		private function display():void
		{
			trace("表示します");
			for( var i:int = 0; i < bmpArray.length; i++ ) {
				var bmp:Bitmap = bmpArray[i] as Bitmap;
				bmp.y = i * 300;	// 300は適当です。

				addChild( bmp );
			}
		};

	};

};

MACユーザーの方は、右クリックで圧縮するとリソースフォークとかのアーカイブが含まれてしまうので、zip.size を trace() すると不可思議な数が出力されます。。。
なので、Clean Archiver とか使えば大丈夫です。

CATEGORY

POSTED

jam

[...] ▼参考 GRAM | グラム » ZipされたJPEGを扱う(複数) [...]

[...] 参考サイト: ActionScript 3.0 でZIPの圧縮と解凍 (Unknown Quality) GRAM | グラム » ZipされたJPEGを扱う(複数) ●FZip [...]





JUN NAKAJIMA
Tokyo, Japan.
member of Onawatobi.
contact@brooklyn.jp