Flex4图片在指定区域内自由拖拽移动,缩放图片大小例子
时间:2022-11-14 23:36:36 编辑:袖梨 来源:一聚教程网
如果图片过大,一般我们展示的时候要允许用户通过鼠标滚轮进行缩放,同时点击可以拖拽移动(类似百度地图那样的操作)。下面通过一个样例进行演示:
效果图如下:
代码如下所示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | <!--?xml version="1.0" encoding="utf-8"?--> < s:application xmlns:fx=" " xmlns:s = "library://ns.adobe.com/flex/spark" xmlns:mx = "library://ns.adobe.com/flex/mx" backgroundcolor = "0x404040" creationcomplete = "init(event)" > < fx:script > <!--[CDATA[ import mx.events.FlexEvent; //图片缩放比例 private var _imgScale:Number = 1; //图片坐标 private var _imgX:Number = 0; private var _imgY:Number = 0; /** * 设置监听 */ protected function init(event:FlexEvent):void { img.addEventListener(MouseEvent.MOUSE_DOWN, itemMouseDown); img.addEventListener(MouseEvent.MOUSE_UP, itemMouseUp); img.addEventListener(MouseEvent.ROLL_OUT, itemMouseUp); img.addEventListener(MouseEvent.MOUSE_WHEEL, itemMouseWheel); } /** * 鼠标按下开始拖动 */ private function itemMouseDown(event:MouseEvent = null):void{ var width:int = img.parent.width - img.width*_imgScale; var height:int = img.parent.height - img.height*_imgScale; img.startDrag(false, new Rectangle(0, 0 , width, height)); } /** * 鼠标弹起停止 拖动 */ private function itemMouseUp(event:MouseEvent):void{ img.stopDrag(); } /** * 鼠标滚轮控制缩放 */ private function itemMouseWheel(event:MouseEvent):void{ //计算每次的缩放比例 _imgScale = this.img.scaleX + (Math.abs(event.delta)/event.delta)*0.05; //设置最大最小的缩放限度 _imgScale = Math.min(1,_imgScale); var minScale:Number = Math.min(img.parent.width/img.width,img.parent.height/img.height); _imgScale = Math.max(minScale,_imgScale); //计算缩放后图片的坐标(保证缩放中心是鼠标) var oldScale:Number = this.img.scaleX; _imgX = this.img.x-(_imgScale/oldScale-1)*(this.img.parent.mouseX - this.img.x); _imgY = this.img.y-(_imgScale/oldScale-1)*(this.img.parent.mouseY - this.img.y); //坐标修正 if(img.width*_imgScale --> = img.parent.width){ if(_imgX>=0){ _imgX=0; }else if((img.width*_imgScale+_imgX)< img.parent.width ){ _imgx = "img.parent.width-img.width*_imgScale;" }="" if(img.height* _imgscale = "" >= img.parent.height){ if(_imgY>=0){ _imgY=0; }else if((img.height*_imgScale+_imgY)< img.parent.height ){ _imgy = "img.parent.height-img.height*_imgScale;" }="" 设置图片缩放比例和坐标="" this.img.scalex = "_imgScale;" this.img.scaley = "_imgScale;" this.img.x = "_imgX;" this.img.y = "_imgY;" ]]=""> </ img.parent.height ){></ img.parent.width ){></ fx:script > < s:group clipandenablescrolling = "true" horizontalcenter = "0" verticalcenter = "0" > < s:rect > < s:fill > < s:solidcolor color = "0xffffff" > </ s:solidcolor ></ s:fill > </ s:rect > < s:image id = "img" source = "img.jpg" > </ s:image ></ s:group > </ s:application > |
相关文章
- 《弓箭传说2》新手玩法介绍 01-16
- 《地下城与勇士:起源》断桥烟雨多买多送活动内容一览 01-16
- 《差不多高手》醉拳龙技能特点分享 01-16
- 《鬼谷八荒》毕方尾羽解除限制道具推荐 01-16
- 《地下城与勇士:起源》阿拉德首次迎新春活动内容一览 01-16
- 《差不多高手》情圣技能特点分享 01-16