package ckaction.style {
	/*
		软件名称：ckplayer
		软件作者：http://www.chplayer.com
		开源软件协议：Mozilla Public License, version 2.0(MPL 2.0)
		MPL 2.0协议英文（原文，正本）查看地址：https://www.mozilla.org/en-US/MPL/2.0/
		MPL 2.0协议中文（翻译）查看地址：http://www.chplayer.com/res/Mozilla_Public_License_2.0_Simplified_Chinese_Reference.txt
		文件最后更新日期：2017-04-07
	*/
	import flash.display.Loader;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLRequest;
	import flash.display.LoaderInfo;
	import flash.utils.ByteArray;
	import flash.display.Bitmap;
	import flash.net.URLLoader;
	import flash.display.BitmapData;
	import flash.geom.Rectangle;
	import flash.geom.Point;
	import flash.display.Sprite;
	import ckaction.act.des;

	public class newPreview {
		private var load: Loader = null;
		private var imgArr: Array = [];
		private var com: Function = null;
		private var imageI: int = 0; //加载图片时计数，一张一张图片加载
		private var bytemapArr: Array = [];
		private var imgW:int=0,imgH:int=0;
		public function newPreview(img: Array, k: Function) {
			// constructor code
			 com = k;
			imgArr = img;
			loadimage();
		}
		private function loadimage(): void {
			var s:String=imgArr[imageI];

			load = new Loader();
			load.contentLoaderInfo.addEventListener(Event.COMPLETE, comLoad);
			load.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorLoad); //监听加载失败

			if(s.substr(0,10)=="data:image" || s.substr(0,3)=="CK:" || s.substr(0,3)=="CE:"){
				var bt: ByteArray = des.getByteArray(s);
				load.loadBytes(bt);
			}
			else{
				load.load(new URLRequest(s));
			}
		}
		private function comLoad(event: Event): void {
			var o: LoaderInfo = load.contentLoaderInfo;
			var bitmapdata: BitmapData
			var bytearr: ByteArray = new ByteArray();
			var bytemap: Bitmap = new Bitmap();
			imgW=o.width*0.1;
			imgH=o.height*0.1;
			bitmapdata = new BitmapData(o.width, o.height);
			bitmapdata.draw(load);
			var temp: ByteArray = bitmapdata.getPixels(bitmapdata.rect);
			bytearr.writeBytes(temp);

			var bitmapdata2: BitmapData = new BitmapData(o.width, o.height);
			bytearr.position = 0;
			bitmapdata2.setPixels(bitmapdata.rect, bytearr);
			//bytemap.bitmapData = bitmapdata2;
			bytemapArr.push(bitmapdata2);
			//com(bytemap);
			remove();
			if (imageI < imgArr.length - 1) {
				imageI++;
				loadimage();
			}
			else {
				rectAngle(); //全部加载完进行切图
			}

		}
		private function rectAngle(): void {
			var mov:Sprite = new Sprite();
			var nx: int = 0; //新的X坐标


			//
			for (var i: int = 0; i < bytemapArr.length; i++) {
				var bm: BitmapData = bytemapArr[i];
				var bx: int = 0,
					by: int = 0; //定义要切的x,y
				for (var y: int = 0; y < 100; y++) {
					var picRect: Rectangle = new Rectangle(bx, by, imgW, imgH); //从哪里开始扣，扣多少？
					var point: Point = new Point(0, 0); //将抠图放在newBitmapdata的那个位置
					var newBitmapdata: BitmapData = new BitmapData(imgW, imgH);
					newBitmapdata.copyPixels(bm, picRect, point);
					var newmap: Bitmap = new Bitmap();
					newmap.bitmapData = newBitmapdata;
					var newc: Sprite = new Sprite();
					newc.addChild(newmap);
					newc.x = nx;
					newc.name = i + ":" + y + "";
					mov.addChild(newc);
					nx += imgW;
					bx += imgW;
					if (bx >= bm.width) {
						bx = 0;
						by += imgH;

					}
				}

			}
			com(mov);
		}
		private function errorLoad(event: IOErrorEvent): void {
			remove();
		}
		private function remove(): void {
			load.removeEventListener(Event.COMPLETE, comLoad);
			load.removeEventListener(IOErrorEvent.IO_ERROR, errorLoad);
			load = null;
		}
	}

}
