`
demojava
  • 浏览: 551684 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

flex drag

 
阅读更多

flex3 Drag
Drag 常用的方法
1.系统startDrag,stopDrag(适合单个拖拽)
2.Move()(适合多个拖拽)
3.DragManager  (有默认的特效)
1.单个拖拽

private function mouseDownHandler():void{
	demo.startDrag();
}

private function mouseUpHandler():void{
	demo.stopDrag();
}
<mx:Button  id="demo" mouseDown="mouseDownHandler()" 
mouseUp="mouseUpHandler()" />


2.拖拽区域限制



 

private function mouseDownHandler():void{
	demo.startDrag(false,new Rectangle(0,0,can1.width-demo.width,can1.height-demo.height));
}



3.拖拽多个原理:把需要拖拽的对象放入一个 容器中拖拽这个容器

private function mouseDownHandler():void{
	cv2.startDrag();
}

private function mouseUpHandler():void{
	cv2.stopDrag();
}
	<mx:Canvas id="cv1" width="544" height="324" backgroundColor="#FFFFFF">
		<mx:Canvas id="cv2" x="0" y="39" width="197" height="159" verticalScrollPolicy="off" horizontalScrollPolicy="off" 
			backgroundColor="green" buttonMode="true" 
			mouseDown="mouseDownHandler()" mouseUp="mouseUpHandler()">
			<mx:Button id="demo" label="demo" x="10" y="38"/>
			<mx:Button label="demo" x="76" y="60"/>
			<mx:Button label="demo" x="28" y="90"/>
		</mx:Canvas>
	</mx:Canvas>


4.拖拽多个控制拖拽区域(容器中x轴最小,最大的元素,y轴最大最小的元素)

 

<mx:Script>
	<![CDATA[
		import mx.core.UIComponent;
		import mx.events.MoveEvent;
		private var maxXObj:Number;
		private var minXObj:Number;
		private var maxYObj:Number;
		private var minYObj:Number;
		private var tempArrayX:Array;
		private var tempArrayY:Array;
		private function mouseDownHandler():void{
			this.cv2.startDrag();
			tempArrayX=new Array(cv2.numChildren);
			tempArrayY=new Array(cv2.numChildren);
			for(var i:int;i<cv2.numChildren;i++)
			{
				var child:UIComponent= cv2.getChildAt(i) as UIComponent;
				tempArrayX[i]=child.x;
				tempArrayY[i]=child.y;
			}
				tempArrayX.sort(Array.NUMERIC);
				tempArrayY.sort(Array.NUMERIC);
				maxXObj=tempArrayX[tempArrayX.length-1];
				minXObj=tempArrayX[0];
				maxYObj=tempArrayY[tempArrayY.length-1];
				minYObj=tempArrayY[0];
			this.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler);
			
		}
		private function mouseUpHandler():void{
			this.removeEventListener(MouseEvent.MOUSE_MOVE,moveHandler);
				if(cv2.x<(0-minXObj))//最左边
			{
				this.cv2.x =(0-minXObj);
			}
			var temp1:Number=cv2.width-(maxXObj+demo.width);
			if(cv2.x>=this.width-(cv2.width-temp1))//最上面
			{
				cv2.x=this.width-(cv2.width-temp1);
			}
			if(this.cv2.y <= (0-minYObj)){
				this.cv2.y = (0-minYObj);
			}
			var temp2:Number=cv2.height-(maxYObj+demo.height);
			if(this.cv2.y >=this.height-(cv2.height-temp2)){//最上面
				cv2.y=this.height-(cv2.height-temp2);
			}
				this.cv2.stopDrag();
		}
		
		private function moveHandler(event:MouseEvent):void{
			if(cv2.x<(0-minXObj))//最左边
			{
				this.cv2.x =(0-minXObj);
				this.cv2.stopDrag();
			}
			var temp1:Number=cv2.width-(maxXObj+demo.width);
			if(cv2.x>=this.width-(cv2.width-temp1))//最上面
			{
				cv2.x=this.width-(cv2.width-temp1);
				this.cv2.stopDrag();
			}
			if(this.cv2.y <= (0-minYObj)){//最上面
				this.cv2.y = (0-minYObj);
				this.cv2.stopDrag();
			}
			var temp2:Number=cv2.height-(maxYObj+demo.height);
			if(this.cv2.y >=this.height-(cv2.height-temp2)){//最下面
				cv2.y=this.height-(cv2.height-temp2);
				this.cv2.stopDrag();
			}
		}
	]]>
</mx:Script>
		<mx:Canvas id="cv2" x="0" y="39" width="197" height="159" verticalScrollPolicy="off" horizontalScrollPolicy="off" 
		backgroundColor="green" buttonMode="true" 
		mouseDown="mouseDownHandler()" mouseUp="mouseUpHandler()">
		<mx:Button id="demo" label="demo" x="10" y="38"/>
		<mx:Button label="demo" x="76" y="60"/>
		<mx:Button label="demo" x="28" y="90"/>
	</mx:Canvas>


5.Move()方法控制



 

  <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
   <mx:Script>
        <![CDATA[
            import mx.core.UIComponent;
            private var regX:Number;
            private var regY:Number;
            public var closeButton : UIComponent;
            protected function startDragging(event : MouseEvent) : void
            {
                regX = event.stageX - demo.x;
                regY = event.stageY - demo.y;
                systemManager.addEventListener(
                    MouseEvent.MOUSE_MOVE, systemManager_mouseMoveHandler, true);
                systemManager.addEventListener(
                    MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true);
                systemManager.stage.addEventListener(
                    Event.MOUSE_LEAVE, stage_mouseLeaveHandler); 
            }
            protected function stopDragging() : void
            {
                systemManager.removeEventListener(
                    MouseEvent.MOUSE_MOVE, systemManager_mouseMoveHandler, true);
        
                systemManager.removeEventListener(
                    MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true);
        
                /* systemManager.stage.removeEventListener(
                    Event.MOUSE_LEAVE, stage_mouseLeaveHandler); */
        
                regX = NaN;
                regY = NaN;
            }
            /**
             *  @private
             */
            private function titleBar_mouseDownHandler(event:MouseEvent) : void
            {
                    startDragging(event);
            }
             var tempx:Number;
             var tempy:Number;
            private function systemManager_mouseMoveHandler(event:MouseEvent) : void
            {
                event.stopImmediatePropagation();
                tempx=event.stageX - regX;
                tempy=event.stageY - regY;
                if(tempx<0)
                {
                 tempx=0; 
                }
                if(tempx>this.width-demo.width)
                {
                 tempx=this.width-demo.width;
                }
                if(tempy<0)
                {
                 tempy=0; 
                }
                if(tempy>this.height-demo.height)
                {
                 tempy=this.height-demo.height; 
                }
                demo.move(tempx,tempy);
            }
            private function systemManager_mouseUpHandler(event:MouseEvent) : void
            {
                if (!isNaN(regX))
                    stopDragging();
            }
            private function stage_mouseLeaveHandler(event:Event) : void
            {
                if (!isNaN(regX))
                    stopDragging();
            }
        ]]>
    </mx:Script>
<mx:HBox id="demo"  backgroundColor="green" mouseDown="{titleBar_mouseDownHandler(event)}" width="141" height="147" x="282" y="156">
</mx:HBox>
</mx:Application>



6.使用DragManager拖拽
DragManager参考连接:
http://demojava.iteye.com/blog/1183448

 

  • 大小: 3.5 KB
  • 大小: 5.3 KB
  • 大小: 4.4 KB
分享到:
评论

相关推荐

    flex 拖拽的例子

    在本文中,我们将深入探讨如何在Flex环境中实现拖放(Drag & Drop)功能,这是一个非常实用的用户交互设计。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。拖放功能在Flex应用中...

    Flex拖拽库flex拖拽库

    一、Flex中的拖放(Drag-and-Drop)机制 1. 拖放事件模型:在Flex中,实现拖放功能涉及一系列的事件,包括`dragStart`、`drop`、`dragEnter`、`dragLeave`、`dragOver`和`dragDrop`等。这些事件使得开发者可以精确地...

    Flex开源项目

    11. **Flex Drag-n-Drop Library**: 一个拖放库,简化了Flex中的拖放操作实现。 12. **birdeye**: 大型数据可视化项目,包括关系分析、空间信息分析、数值分析等多个模块。 13. **antennae**: 基于Ant的Flex项目...

    Flex3+组件拖放教程

    Flex3 是Adobe Flash平台的一个版本,它提供了丰富的用户界面组件和强大的数据绑定功能,用于创建交互式的Web应用程序。在Flex3中,组件的拖放功能是一项核心特性,它允许用户轻松地通过鼠标操作将一个对象从一处...

    一些不错的开源Flex项目.txt

    #### 十二、Flex Drag-n-Drop Library - **网址**:http://code.google.com/p/flex-drag-n-drop-lib/ - **简介**:提供了一套完整的拖放功能实现方案。 - **特点**: - 简单集成:只需要几行代码就能实现复杂的...

    flex支持拖拽的DataGrid

    flex支持拖拽的DataGrid,如果去查api来置一些属性将会比较麻烦,这个DataGrid可以获取拖拽的内容,这是一个application,可以直接运行

    Flex拖拽

    在Adobe Flex应用程序开发中,拖拽(Drag and Drop)是一种非常实用的功能,它允许用户将数据或对象从一个位置移动到另一个位置。这种功能在视觉应用中尤其有用,比如在两个列表之间拖动数据项、重新定位容器中的...

    flex 移动折线图

    在Flex编程中,移动折线图是一种常见的交互功能,它允许用户通过拖动来查看数据的不同部分,这对于处理大量数据或者需要动态分析趋势的应用来说非常有用。本篇将深入探讨如何在Flex中实现线图的左右移动,以及...

    Flex 3 拖放实现

    在 Flex 3 中,拖放功能(Drag & Drop)是一种常见且实用的用户交互方式,允许用户通过鼠标操作将一个对象从一处拖动到另一处,常用于文件管理、数据交换等场景。 拖放功能在 Flex 3 中主要由两个核心组件支持:`...

    flex 拖拽功能 中文文档

    Flex框架提供了一套强大的机制用于实现拖放(drag and drop)功能,这在用户界面设计中极为常见,特别是在构建高度交互性的应用时。本文旨在深入探讨Flex中的拖拽功能,包括其工作原理、关键概念、以及如何在实际...

    flex 窗口拖动与尺寸改变

    如果需要自定义拖动行为,可以通过监听`dragStart`、`drag`和`dragEnd`事件来进行控制。 2. **窗口尺寸改变**:窗口的大小改变通常发生在窗口边框上。当用户在窗口的边框处按下并拖动鼠标时,窗口会相应地调整其...

    flex objecthandles一个很不错的拖拽伸缩控件

    接下来,我们将深入探讨Flex中的拖拽(Drag)和伸缩(Resize)机制,以及ObjectHandle组件如何实现这些功能。 1. Flex框架:Flex是Adobe开发的一种用于构建富互联网应用(RIA)的开源框架,基于ActionScript和MXML。它...

    flex拖拽

    拖拽功能也需要考虑不支持`drag`和`drop`事件的浏览器,可能需要用模拟的方式实现。 5. **库和框架支持** - **React**:在React中,可以使用`react-dnd`库来简化拖放操作,它提供了高阶组件和钩子函数来处理拖放...

    Flex关于拖拽编程

    Flex是Adobe公司开发的一种用于构建富互联网应用(RIA)的框架,它基于ActionScript和MXML,提供了丰富的用户界面组件和交互功能。在Flex中,拖拽编程是一种常见的交互设计方式,允许用户通过鼠标或其他输入设备将...

    Flex4实现拖拽功能

    在Flex4中,拖放(Drag and Drop,简称DnD)功能是一项强大的交互设计工具,它允许用户通过直观的拖动操作在界面上移动或转移数据。在本主题中,我们将深入探讨如何在Flex4中实现图片的拖放功能,包括两种模式:拖动...

    Flex拖拽控件效果

    在Flex中,实现拖放(Drag and Drop)功能主要涉及两个核心类:`DragManager`和`DragInitiator`。`DragManager`是系统级别的服务,负责管理整个应用的拖放操作,而`DragInitiator`通常是一个可拖动的UI组件,如...

    flex air开发指南

    ##### 11.7 拖拽(DragAndDrop) - **拖拽概念**:解释拖拽功能的概念。 - **实现方法**:指导如何实现在 AIR 中的拖拽功能。 ##### 11.8 复制与粘贴 - **复制粘贴介绍**:解释复制与粘贴功能。 - **实现方法**:...

    flex拖动树形

    这通常涉及监听鼠标事件,如mousedown,然后创建一个DragObject,包含拖动所需的信息(例如,被拖动的节点数据)。接着,调用DragManager.doDrag方法启动拖放过程。 接着,我们需要为目标区域设置DropTarget。在...

    Flex实现拓扑,可以拖动 画线等

    2. **Drag and Drop功能**:Flex内置了拖放(Drag and Drop)API,使得用户可以轻松实现节点的拖动。通过监听鼠标事件,如mousedown、mousemove和mouseup,可以创建自定义的拖放行为。用户只需点击节点并移动鼠标,...

    flex中 Tree树节点内部拖动实例(此实例限制了什么节点可以拖动及拖动到什么位置)

    在IT行业中,Flex是一种基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。这个实例涉及的是在Flex中的Tree组件实现节点的内部拖放功能,这对于创建交互式用户界面,尤其是数据层级结构的展示...

Global site tag (gtag.js) - Google Analytics