- <?xml version="1.0" encoding="utf-8"?>
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
- creationComplete="application1_creationCompleteHandler(event)" width="660" height="800">
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <fx:Script>
- <![CDATA[
- import flash.net.FileReference;
- import mx.events.FlexEvent;
- import mx.graphics.ImageSnapshot;
- import mx.graphics.codec.JPEGEncoder;
- import spark.events.IndexChangeEvent;
- private var file:FileReference;
- private var ImageArray:Array;
- private var bitMapArray:Array;
- private var currentMoveImage:Image;
- private var dx:Number;
- private var dy:Number;
- private var qyX:Number = 10;
- private var qyY:Number = 210;
- private var qyWidth:Number = 640;
- private var qyHeight:Number = 400;
- private var bitmapdata:BitmapData;
- [Embed(source='1.gif')]
- private var gif1:Class;
- [Embed(source='2.gif')]
- private var gif2:Class;
- [Embed(source='3.gif')]
- private var gif3:Class;
- [Embed(source='4.gif')]
- private var gif4:Class;
- [Embed(source='5.gif')]
- private var gif5:Class;
- [Embed(source='6.gif')]
- private var gif6:Class;
- [Embed(source='7.gif')]
- private var gif7:Class;
- [Embed(source='8.gif')]
- private var gif8:Class;
- [Embed(source='9.gif')]
- private var gif9:Class;
- [Embed(source='10.gif')]
- private var gif10:Class;
- [Bindable]private var imgArray:Array = [
- {imgSource:gif1},
- {imgSource:gif2},
- {imgSource:gif3},
- {imgSource:gif4},
- {imgSource:gif5},
- {imgSource:gif6},
- {imgSource:gif7},
- {imgSource:gif8},
- {imgSource:gif9},
- {imgSource:gif10}
- ]
- /**
- *点击另存为方法
- */
- protected function saveas_clickHandler(event:MouseEvent):void
- {
- bitmapdata = new BitmapData(qyWidth,qyHeight);
- var l:int = bitMapArray.length;
- for(var i:int = 0;i<l;i++)
- {
- var bit:Bitmap = bitMapArray[i];
- currentMoveImage = ImageArray[i];
- var bitdata:BitmapData = bit.bitmapData;
- var rect:Rectangle = new Rectangle(0,0,currentMoveImage.width,currentMoveImage.height);
- var point:Point = new Point(currentMoveImage.x-qyX,currentMoveImage.y-qyY);
- bitmapdata.copyPixels(bitdata,rect,point);
- }
- saveImg.source = new Bitmap(bitmapdata);
- var timer:Timer = new Timer(10,1);
- timer.addEventListener(TimerEvent.TIMER_COMPLETE,onTimerComplete);
- timer.start();
- }
- /**
- *延时10毫秒等待数据加载完
- */
- private function onTimerComplete(event:TimerEvent):void
- {
- var imgData:ImageSnapshot = ImageSnapshot.captureImage(saveImg,0);
- file.save(imgData.data,"image.png");
- }
- /**
- *点击清除
- */
- private function clearImg(event:MouseEvent):void
- {
- for(var i:int = 0;i<ImageArray.length;i++)
- {
- this.removeElement(ImageArray[i]);
- }
- ImageArray = [];
- bitMapArray = [];
- }
- private function onChange(event:IndexChangeEvent):void
- {
- var obj:Object = list.selectedItem;
- var bit:Bitmap = new obj.imgSource();
- bitMapArray.push(bit);
- var img:Image = new Image();
- img.source = obj.imgSource;
- img.y = 220;
- img.x = 20;
- img.buttonMode = true;
- img.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
- ImageArray.push(img);
- this.addElement(img);
- list.selectedIndex = -1;
- }
- /**
- *鼠标按下
- */
- private function onDown(event:MouseEvent):void
- {
- currentMoveImage = event.target as Image;
- dx = mouseX - currentMoveImage.x;
- dy = mouseY - currentMoveImage.y;
- this.stage.addEventListener(MouseEvent.MOUSE_MOVE,onMove);
- this.stage.addEventListener(MouseEvent.MOUSE_UP,onUp);
- }
- /**
- *鼠标移动实现图片拖动
- */
- private function onMove(event:MouseEvent):void
- {
- currentMoveImage.x = mouseX-dx;
- currentMoveImage.y = mouseY-dy;
- if(currentMoveImage.x<qyX){
- currentMoveImage.x = qyX+1;
- }
- if(currentMoveImage.x+currentMoveImage.width>qyWidth+qyX){
- currentMoveImage.x = qyWidth+qyX-1-currentMoveImage.width;
- }
- if(currentMoveImage.y<qyY){
- currentMoveImage.y = qyY+1;
- }
- if(currentMoveImage.y+currentMoveImage.height>(qyHeight+qyY)){
- currentMoveImage.y = qyHeight+qyY-1-currentMoveImage.height;
- }
- }
- /**
- *鼠标抬起移除事件
- */
- private function onUp(event:MouseEvent):void
- {
- this.stage.removeEventListener(MouseEvent.MOUSE_MOVE,onMove);
- this.stage.removeEventListener(MouseEvent.MOUSE_UP,onUp);
- currentMoveImage = null;
- }
- protected function application1_creationCompleteHandler(event:FlexEvent):void
- {
- //创建上传下载文件对象
- file = new FileReference();
- //实例化数组 盛放创建完得图片
- ImageArray = new Array();
- bitMapArray = new Array();
- saveImg.width = qyWidth;
- saveImg.height = qyHeight;
- k.graphics.lineStyle(1,0x222222,1);
- k.graphics.drawRect(qyX,qyY,qyWidth,qyHeight);
- k.graphics.endFill();
- }
- ]]>
- </fx:Script>
- <s:Label x="23" y="10" text="请选择图片进行拼图" height="23" color="#F70606" fontFamily="宋体" fontSize="15"/>
- <s:List x="23" y="30" width="611" itemRenderer="imgRender" height="158" id="list" change="onChange(event)">
- <s:layout>
- <s:HorizontalLayout/>
- </s:layout>
- <s:dataProvider>
- <s:ArrayCollection source="{imgArray}"/>
- </s:dataProvider>
- </s:List>
- <s:Button x="11" y="653" label="另存为" id="saveas" click="saveas_clickHandler(event)" visible="true"/>
- <mx:Image id="saveImg" visible="false"/>
- <s:SpriteVisualElement id="k"/>
- <s:Button x="104" y="653" label="清除" click="clearImg(event)"/>
- </s:Application>
zhuan zi :http://632408004.iteye.com/blog/940881