已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TitleWindow放大放小还原关闭拖拽放大窗体(原创)2010-08-26 15:36ReSizeTitleWinAs.aspackage eko.containersimport flash.display.DisplayObject;import flash.events.Event;import flash.events.MouseEvent;import flash.geom.Point;import mx.containers.TitleWindow;import mx.controls.Button;import mx.core.Application;import mx.core.FlexGlobals;import mx.managers.CursorManager;import mx.managers.PopUpManager;public class ReSizeTitleWinAs extends TitleWindow/ Event(name=myClose)/ Event(name=myMax)/ Event(name=myMin)/ Event(name=myRestore)private var btnClose:Button;/关闭按钮private var btnMin:Button;/最小化按钮private var btnMax:Button;/最大化按钮private var btnRestore:Button;/还原按钮private var theStatus:int=0;/窗口状态,0正常 1最大化 2最小化;private var isReSize:Boolean;/是否允许缩放private var theMinWidth:Number=200;/窗口最小宽度private var theMinHeight:Number=200;/窗口最大高度private var theOldPoint:Point;/改变大小前窗口的x,y坐标private var theOldWidth:Number;/最大最小化时的宽private var theOldHeight:Number;/最大最小化时的高/初始化窗体宽,高,x,yprivate var initWidth:Number;private var initHeight:Number;private var initX:Number;private var initY:Number;private var mouseMargin:Number=4;/拖动时候响应范围/设置光标的位置值 右上:3 右下:6 左下:11 左上8private var theSide:Number=0;private var SIDE_OTHER:Number=0;private var SIDE_TOP:Number=1;private var SIDE_RIGHT:Number=2;private var SIDE_LEFT:Number=7;private var SIDE_BOTTOM:Number=4;/当前鼠标光标类public var currentType:Class=null;/按钮图标Embed(/assets/images/Buttonclose.png)private var IconClose:Class;Embed(/assets/images/Buttonmaximize.png)private var IconMax:Class;Embed(/assets/images/Buttonminimize.png)private var IconMin:Class;Embed(/assets/images/Buttonrestore.png)private var IconRestore:Class;/鼠标光标图标Embed(/assets/images/resizeCursorH.gif)private var CursorH:Class;Embed(/assets/images/resizeCursorTLBR.gif)private var CursorR:Class;Embed(/assets/images/resizeCursorTRBL.gif)private var CursorL:Class;Embed(/assets/images/resizeCursorV.gif)private var CursorV:Class;private var CursorNull:Class=null;public function ReSizeTitleWinAs()super();/* override 重载TitleWindow的createChildren方法* Title添加放大,放小,还原,关闭按钮* 添加按钮监听事件* 设置按钮样式图片* 添加窗体拖动监听事件* */protected override function createChildren():voidsuper.createChildren();btnClose=new Button();/关闭按钮btnMin=new Button();/最小化按钮btnMax=new Button();/最大化按钮btnRestore=new Button();/还原按钮/设置按钮的样式btnClose.setStyle(upIcon,IconClose);btnMin.setStyle(upIcon,IconMin);btnMax.setStyle(upIcon,IconMax);btnRestore.setStyle(upIcon,IconRestore);btnClose.setStyle(downIcon,IconClose);btnMin.setStyle(downIcon,IconMin);btnMax.setStyle(downIcon,IconMax);btnRestore.setStyle(downIcon,IconRestore);btnClose.setStyle(overIcon,IconClose);btnMin.setStyle(overIcon,IconMin);btnMax.setStyle(overIcon,IconMax);btnRestore.setStyle(overIcon,IconRestore);/加载按钮rawChildren.addChild(btnClose);rawChildren.addChild(btnMin);rawChildren.addChild(btnMax);rawChildren.addChild(btnRestore);/监听按钮事件btnClose.addEventListener(MouseEvent.CLICK,onCloseClick);btnMin.addEventListener(MouseEvent.CLICK,onMinClick);btnMax.addEventListener(MouseEvent.CLICK,onMaxClick);btnRestore.addEventListener(MouseEvent.CLICK,onReClick);btnRestore.visible=false;/侦听拖拽相关的事件this.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);this.addEventListener(MouseEvent.MOUSE_OUT,onMouseOut);this.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);/记录初始化时候的窗体信息initWidth=this.width;initHeight=this.height;initX=this.x;initY=this.y;/* 通过设置此容器子项的位置和大小来响应大小更改。* 定义添加按钮的位置,大小* param unscaledWidth:Number* param unscaledHeight:Number* */protected override function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void/按钮布局super.updateDisplayList(unscaledWidth,unscaledHeight);var AssetClose:DisplayObject=btnClose.getChildByName(upIcon);var AssetWidth:int=AssetClose.width+5;var AssetHeight:int=AssetClose.height+5;/设置按钮样式btnClose.setActualSize(AssetWidth,AssetHeight);btnMin.setActualSize(AssetWidth,AssetHeight);btnMax.setActualSize(AssetWidth,AssetHeight);btnRestore.setActualSize(AssetWidth,AssetHeight);var fromTop:int=10;var fromRight:int=10;var theX:int=unscaledWidth-AssetWidth-fromRight;var theY:int=fromTop;btnClose.move(theX,theY);btnMax.move(theX-18,theY);btnMin.move(theX-34,theY);btnRestore.move(theX-18,theY);/* 窗体关闭事件 * param event:MouseEvent* */private function onCloseClick(event:MouseEvent):voidbtnMax.visible=true;btnRestore.visible=false;PopUpManager.removePopUp(this);theStatus=0;/ this.dispatchEvent(new Event(myClose);/* 窗体缩小事件 * param event:MouseEvent* */private function onMinClick(event:MouseEvent):voidonSaveRestore();this.x=0;this.y=0;this.width=250;this.height=50;/ this.dispatchEvent(new Event(myMin);theStatus=2;/* 窗体放大事件 * param event:MouseEvent* */private function onMaxClick(event:MouseEvent):voidonSaveRestore();/ this.dispatchEvent(new Event(myMax);this.width=stage.stageWidth;this.height=stage.stageHeight-20;this.x=0;this.y=0;this.isPopUp=false;btnMax.visible=false;btnRestore.visible=true;theStatus=1;/* 窗体还原事件 * param event:MouseEvent* */private function onReClick(event:MouseEvent):voidonGetRestore();/ this.dispatchEvent(new Event(myRestore);/还原按钮代码this.width=initWidth;this.height=initHeight;this.x=initX;this.y=initY;this.isPopUp=true;btnMax.visible=true;btnRestore.visible=false;theStatus=0;/* 当鼠标拖放完毕时候移除拖大窗体事件 * param event:MouseEvent* */private function onMouseUp(event:MouseEvent):voidif(isReSize)FlexGlobals.topLevelApplication.parent.removeEventListener(MouseEvent.MOUSE_UP,onMouseUp);FlexGlobals.topLevelApplication.parent.removeEventListener(MouseEvent.MOUSE_MOVE,onResize);isReSize=false;/改变鼠标为指针鼠标图标onChangeCursor(CursorNull);/* 当鼠标按下的时候添加拖动窗口大小事件 * param event:MouseEvent* */private function onMouseDown(event:MouseEvent):voidif(theSide!=0)isReSize=true;FlexGlobals.topLevelApplication.parent.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);FlexGlobals.topLevelApplication.parent.addEventListener(MouseEvent.MOUSE_MOVE,onResize);/记录窗体位置var point:Point=new Point();point=this.localToContent(point);theOldPoint=point;/* 鼠标拖动重置窗口位置大小 * param event:MouseEvent* */private function onResize(event:MouseEvent):voidif(isReSize)/获取拖动后最终位置var xPlus:Number=FlexGlobals.topLevelApplication.parent.mouseX-this.x;var yPlus:Number=FlexGlobals.topLevelApplication.parent.mouseY-this.y;/根据不同的角度的拖动改变窗体大小switch(theSide)case SIDE_RIGHT+SIDE_BOTTOM:this.width=xPlustheMinWidth?xPlus:theMinWidth;this.height=yPlustheMinHeight?yPlus:theMinHeight;break;case SIDE_LEFT+SIDE_TOP:this.width=this.width-xPlustheMinWidth?this.width-xPlus:theMinWidth;this.height=this.height-yPlustheMinHeight?this.height-yPlus:theMinHeight;this.x=this.widththeMinWidth?FlexGlobals.topLevelApplication.parent.mouseX:this.x;this.y=this.heighttheMinHeight?FlexGlobals.topLevelApplication.parent.mouseY:this.y;break;case SIDE_LEFT+SIDE_BOTTOM:this.width=this.width-xPlustheMinWidth?this.width-xPlus:theMinWidth;this.height=yPlustheMinHeight?yPlus:theMinHeight;this.x=this.widththeMinWidth?FlexGlobals.topLevelApplication.parent.mouseX:this.x;break;case SIDE_RIGHT+SIDE_TOP:this.width=xPlustheMinWidth?xPlus:theMinWidth;this.height=this.height-yPlustheMinHeight?this.height-yPlus:theMinHeight;this.y=this.heighttheMinHeight?FlexGlobals.topLevelApplication.parent.mouseY:this.y;break;case SIDE_RIGHT:this.width=xPlustheMinWidth?xPlus:theMinWidth;break;case SIDE_LEFT:this.width=this.width-xPlustheMinWidth?this.width-xPlus:theMinWidth;this.x=this.widththeMinWidth?FlexGlobals.topLevelApplication.parent.mouseX:this.x;break;case SIDE_BOTTOM:this.height=yPlustheMinHeight?yPlus:theMinHeight;break;case SIDE_TOP:this.height=this.height-yPlustheMinHeight?this.height-yPlus:theMinHeight;this.y=this.heighttheMinHeight?FlexGlobals.topLevelApplication.parent.mouseY:this.y;break;/* 当鼠标移动到窗体外边,设置鼠标图标还原 指针图标* param event:MouseEvent* */private function onMouseOut(event:MouseEvent):voidif(!isReSize&this.theStatus=0)theSide=0;onChangeCursor(CursorNull);this.isPopUp=true;/* 根据鼠标的拖动判断鼠标拖动方向和拖动后窗体的大小* param event:MouseEvent* */private function onMouseMove(event:MouseEvent):voidif(!theStatus)var point:Point=new Point();point=this.localToGlobal(point);var xPosition:Number=FlexGlobals.topLevelApplication.parent.mouseX;var yPosition:Number=FlexGlobals.topLevelApplication.parent.mouseY;/根据鼠标位置判断在窗体的什么位置if(xPosition=(point.x+this.width-mouseMargin)&yPosition=(point.y+this.height-mouseMargin)/右下onChangeCursor(CursorR,-9,-9);theSide=SIDE_RIGHT+SIDE_BOTTOM;this.isPopUp=false;else if(xPosition=(point.x+mouseMargin)&yPosition=(point.y+mouseMargin)/左上onChangeCursor(CursorR,-9,-9);theSide=SIDE_LEFT+SIDE_TOP;this.isPopUp=false;else if(xPosition=(point.y+this.height-mouseMargin)/左下onChangeCursor(CursorL,-9,-9);theSide=SIDE_BOTTOM+SIDE_LEFT;this.isPopUp=false;else if(xPosition=(point.x+this.width-mouseMargin)&yPosition(point.x+this.width-mouseMargin)/右onChangeCursor(CursorH,-1,-1);theSide=SIDE_RIGHT;this.isPopUp=false;else if(xPosition(point.x+mouseMargin)/左onChangeCursor(CursorH,-1,-1);theSide=SIDE_LEFT;this.isPopUp=false;else if(yPosition(point.y+this.height-mouseMargin)/下onChangeCursor(CursorV,-1,-1);theSide=SIDE_BOTTOM;this.isPopUp=false;elseonChange
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小吃加盟店合同协议
- 市政劳务分包协议书
- 廉租房转让合同范本
- 扫描仪购销合同范本
- 扶贫房屋鉴定协议书
- 批发经销商合同范本
- 找律师拟定协议合同
- 承包保险协议书范本
- 承包合同顺延的协议
- 承包地转让协议合同
- 2025-2026学年高一化学上学期第一次月考卷(四川)含答案解析
- 2025年江苏省公考《申论》(B卷)题及参考答案
- 危化品运输风险评估与智能管控模型研究
- 脱硫塔安装施工进度方案
- 2025药材行业市场全面分析及发展路径与投资规划策略报告
- 雨课堂学堂云在线《中国马克思主义与当代(北京化工大学 )》单元测试考核答案
- 2025年陕西有色金属科工贸服务有限公司招聘(24人)笔试考试参考题库及答案解析
- 2025年石化油品市场调研合同协议
- 古文二则课件四知
- 【《研发管理的定义和理论基础概述》2800字】
- 2025医疗器械研发秋招笔试题及答案
评论
0/150
提交评论