Flex拖动技术大全(2)

Flex 拖动技术

2.非加强拖动技术
Label的拖动,可以扩展到其他组件

Button的拖动,可以扩展到其他组件

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  
  3.                 layout="vertical"  
  4.                 verticalAlign="middle"  
  5.                 fontSize="12">  
  6.     <mx:Script>  
  7.         <![CDATA[ 
  8.             import mx.core.IUIComponent; 
  9.             import mx.events.DragEvent; 
  10.             import mx.core.DragSource; 
  11.             import mx.managers.DragManager; 
  12.  
  13.             //拖动初始器 
  14.             private function dragSource(e:MouseEvent, format:String):void 
  15.             { 
  16.                 var iu:IUIComponent=e.currentTarget as IUIComponent; 
  17.                 var ds:DragSource=new DragSource(); 
  18.                 ds.addData({"x": e.localX, "y": e.localY}, format); //设置一个标号format 
  19.                 DragManager.doDrag(iu, ds, e); 
  20.             } 
  21.  
  22.             //当拖进去时 
  23.             private function onEnter(e:DragEvent, format:String):void 
  24.             { 
  25.                 if (e.dragSource.hasFormat(format)) //如果标号为format则接受拖来的物体 
  26.                 { 
  27.                     DragManager.acceptDragDrop(IUIComponent(e.target)); 
  28.                 } 
  29.             } 
  30.  
  31.             //当拖完成时 
  32.             private function onDrop(e:DragEvent, format:String):void 
  33.             { 
  34.                 var myData:Object=new Object(); 
  35.                 myData=e.dragSource.dataForFormat(format); 
  36.                 btn.x=this.mouseX myData.x; //btn为按钮的id,要是扩展到其他组件,改这里就可以了。 
  37.                 btn.y=this.mouseY myData.y; 
  38.             } 
  39.         ]]>  
  40.     </mx:Script>  
  41.     <mx:Canvas y="40"  
  42.                id="cansAccess"  
  43.                backgroundColor="#000000"  
  44.                width="300"  
  45.                height="200"  
  46.                dragEnter="onEnter(event,'formatString')"  
  47.                dragDrop="onDrop(event,'formatString')"/>  
  48.     <mx:Button id="btn"  
  49.                label="拖动我到面板"  
  50.                mouseDown="dragSource(event,'formatString')"/>  
  51.      </mx:Application>  


 

一定要注意,标签的先后位置,Button 要在Canvas 之后.


3.Canvas容器中拖动Box,你还可以在Box中添加图片等。

 

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  
  3.                 layout="absolute"  
  4.                 fontSize="12">  
  5.     <mx:Script>  
  6.         <![CDATA[ 
  7.             import mx.containers.Box; 
  8.             import mx.containers.Canvas; 
  9.             import mx.core.IUIComponent; 
  10.             import mx.events.DragEvent; 
  11.             import mx.managers.DragManager; 
  12.             import mx.core.DragSource; 
  13.  
  14.             //拖动初始器 
  15.             private function dragSource(e:MouseEvent, format:String):void 
  16.             { 
  17.                 var iu:IUIComponent=e.currentTarget as IUIComponent; 
  18.                 var ds:DragSource=new DragSource(); 
  19.                 ds.addData(iu, format); //设置一个标号format 
  20.                 DragManager.doDrag(iu, ds, e); // 开始拖动这个物体 
  21.             } 
  22.  
  23.             //当拖进去时 
  24.             private function onEnter(e:DragEvent, format:String):void 
  25.             { 
  26.                 if (e.dragSource.hasFormat(format)) //如果标号为format则接受拖来的物体 
  27.                 { 
  28.                     DragManager.acceptDragDrop(IUIComponent(e.target)); // 接受被拖进来的物体       
  29.                 } 
  30.             } 
  31.  
  32.             //当拖完成时 
  33.             private function onDrop(e:DragEvent, format:String):void 
  34.             { 
  35.                 var box:Box=Box(e.dragInitiator); //如果扩展到其他组件,改这里Box就可以了。 
  36.                 box.x=e.localX; 
  37.                 box.y=e.localY; 
  38.             } 
  39.         ]]>  
  40.     </mx:Script>  
  41.   
  42.     <mx:Canvas backgroundColor="0xEEEEEE"  
  43.                width="500"  
  44.                height="246"  
  45.                horizontalCenter="0"  
  46.                verticalCenter="0"  
  47.                dragEnter="onEnter(event,'boxFormat')"  
  48.                dragDrop="onDrop(event,'boxFormat')">  
  49.         <mx:Box id="boxDrag"  
  50.                 width="20"  
  51.                 height="20"  
  52.                 backgroundColor="0x00FFCC"  
  53.                 x="97"  
  54.                 y="47"  
  55.                 mouseDown="dragSource(event,'boxFormat');">  
  56.         </mx:Box>  
  57.     </mx:Canvas>  
  58.      </mx:Application>  


 

4.图片的拖动

 

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  
  3.                 layout="vertical"  
  4.                 width="100%"  
  5.                 height="100%"  
  6.                 fontSize="12">  
  7.     <mx:Script>  
  8.         <![CDATA[ 
  9.             private var oldX:Number; //拖动开始是的坐标 
  10.             private var oldY:Number; 
  11.  
  12.             //拖动开始 
  13.             private function dragStart(event:MouseEvent):void 
  14.             { 
  15.                 oldX=event.stageX; //相对Application的坐标 
  16.                 oldY=event.stageY; 
  17.             } 
  18.  
  19.             //拖动结束 
  20.             private function dragEnd(event:MouseEvent):void 
  21.             { 
  22.                 lbl.text="Local (x,y):" event.localX.toString() "," event.localX.toString(); //相对图片的坐标 
  23.                 lbl2.text="Stage (x,y):" event.stageX.toString() "," event.stageY.toString(); //相对Application的坐标 
  24.                 if (event.buttonDown) 
  25.                 //如果鼠标在移动过程中并且按下,也就是说鼠标的拖动事件。 
  26.                     var x:Number=event.stageX oldX; //相对Application的坐标的移动量 
  27.                     var y:Number=event.stageY oldY; 
  28.                     oldX=event.stageX; //更新拖动开始是的坐标 
  29.                     oldY=event.stageY; 
  30.                     img.move(img.x x, img.y y); //img是 Image的id,如果扩展到其他组件,改这里就可以了。 
  31.                 } 
  32.             } 
  33.         ]]>  
  34.     </mx:Script>  
  35.     <mx:Label x="10"  
  36.               y="10"  
  37.               text=""  
  38.               id="lbl"/>  
  39.     <mx:Label x="10"  
  40.               y="27"  
  41.               text=""  
  42.               id="lbl2"/>  
  43.     <mx:Panel x="257"  
  44.               y="71"  
  45.               width="700"  
  46.               height="80%"  
  47.               layout="absolute"  
  48.               horizontalScrollPolicy="off"  
  49.               verticalScrollPolicy="off"  
  50.               title="图片在面板中的拖动例子"  
  51.               fontSize="12">  
  52.         <mx:Image id="img"  
  53.                   x="0"  
  54.                   y="0"  
  55.                   source="test.JPG"  
  56.                   mouseMove="dragEnd(event)"  
  57.                   mouseDown="dragStart(event)"/>  
  58.     </mx:Panel>  
  59.      </mx:Application>  


 


MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值