代码:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()" xmlns:ns1="com.flexspy.imp.*"> <mx:Script> <![CDATA[ import mx.containers.Canvas; import mx.controls.Image; import test.GridImg; import mx.events.DragEvent; import mx.managers.DragManager; import mx.core.DragSource; private var tolNum:uint = 20; private var xNum:uint = 5; private var xdis:uint = 15; private var ydis:uint = 15; [Embed(source='pic/1.jpg')] [Bindable] private var defIcon:Class; private var IconImgArr:Array = [null,defIcon,null,null,null,null,defIcon,defIcon]; private var targetImage:Image; private var imgArr:Array = new Array; private var bool:Boolean = false; private function initApp():void { var k:uint = 0; var kk:uint = 0; for(var i:uint=0;i < tolNum; i++) { var gridImg:GridImg = new GridImg; imgArr.push(gridImg); this.addChild(gridImg) if(IconImgArr[i] != null) gridImg.img.source = IconImgArr[i]; if(i%xNum == 0) { kk=0; k++; gridImg.x = 0; gridImg.y += k*(gridImg.height + ydis); } else { kk++; gridImg.x += kk*(gridImg.width + xdis); gridImg.y += k*(gridImg.height + ydis); } //注册事件 if(imgArr[i].img.source == null) { imgArr[i].addEventListener(DragEvent.DRAG_ENTER,imgdrop_enter); imgArr[i].addEventListener(DragEvent.DRAG_DROP,imgdrop_drop); imgArr[i].addEventListener(DragEvent.DRAG_EXIT,imgdrop_exit); } else if(imgArr[i].img.source != null) { imgArr[i].addEventListener(MouseEvent.MOUSE_DOWN, mouse_down); } } } //按下 private function mouse_down(e:MouseEvent):void { targetImage = Image(e.currentTarget.img); var dragProxy:Image = new Image(); dragProxy.source = targetImage.source; dragProxy.width = targetImage.width; dragProxy.height = targetImage.height;
var dataObj:Object = new Object(); dataObj.source = targetImage.source; dataObj.width = targetImage.width; dataObj.height = targetImage.height; dataObj.target = e.currentTarget; var ds:DragSource = new DragSource(); ds.addData(dataObj, "data"); DragManager.doDrag(targetImage, ds,e,dragProxy); } //移进目标 private function imgdrop_enter(e:DragEvent):void { DragManager.acceptDragDrop(Canvas(e.currentTarget)); e.currentTarget.mouseOverFun(); } //移出目标 private function imgdrop_exit(e:DragEvent):void { e.currentTarget.mouseOutFun(); } //拖动到对应目标结束事件 private function imgdrop_drop(e:DragEvent):void { var dataObj:Object = e.dragSource.dataForFormat("data"); e.currentTarget.img.source = dataObj.source; targetImage.source = null; e.currentTarget.removeEventListener(DragEvent.DRAG_ENTER,imgdrop_enter); e.currentTarget.removeEventListener(DragEvent.DRAG_DROP,imgdrop_drop); e.currentTarget.addEventListener(MouseEvent.MOUSE_DOWN, mouse_down); dataObj.target.removeEventListener(MouseEvent.MOUSE_DOWN, mouse_down); dataObj.target.addEventListener(DragEvent.DRAG_ENTER,imgdrop_enter); dataObj.target.addEventListener(DragEvent.DRAG_DROP,imgdrop_drop); trace("装备放置成功!"); } ]]> </mx:Script> </mx:Application>
///////////////名:GridImg
<?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="32" height="32" backgroundColor="#F8F2F2" mouseOver="mouseOverFun()" mouseOut="mouseOutFun()" > <mx:Script> <![CDATA[ private var filterOver : GlowFilter = new GlowFilter(0xdddddd,1,10,10,2,1); public var dragImg:Image; public function mouseOverFun():void { this.filters = [filterOver]; } public function mouseOutFun():void { this.filters = null; } ]]> </mx:Script> <mx:Image id="img" width="100%" height="100%" /> </mx:Canvas> |