flex titleWindow添加最小化和最大化按纽as
来源:互联网 发布:duet display windows 编辑:程序博客网 时间:2024/05/22 02:09
package com.talkyun.rheaui.model{//MyWindow作用是为titleWindow添加窗体的最小化和最大化的功能 import flash.events.MouseEvent; import mx.containers.TitleWindow; import mx.controls.Button; public class MyWindow extends TitleWindow { public function MyWindow() { super(); this.showCloseButton=true; } protected var maxSizeButton:Button; //最大化按钮 protected var minSizeButton:Button; //最小化按钮 //正常状态下窗口的大小、位置 protected var normalX:int,normalY:Number,normalWidth:int,normalHeight:int; //初始状态 protected var winState:String="normal"; override protected function createChildren():void { super.createChildren(); //创建最大化按钮 this.maxSizeButton=new Button(); this.maxSizeButton.width=this.maxSizeButton.height=16; this.maxSizeButton.y=6; //添加最大化事件 this.maxSizeButton.addEventListener(MouseEvent.CLICK,OnMaxSize); this.titleBar.addChild(this.maxSizeButton); //创建最小化按钮 this.minSizeButton=new Button(); this.minSizeButton.width=this.minSizeButton.height=16; this.minSizeButton.y=6; //添加最小化事件 this.minSizeButton.addEventListener(MouseEvent.CLICK,OnMinSize); this.titleBar.addChild(this.minSizeButton); } protected function OnMaxSize(e:MouseEvent):void { if(winState=="normal") { //保存正常状态下窗口位置、大小 normalX=this.x; normalY=this.y; normalHeight=this.height; normalWidth=this.width; //设置为最大化状态 this.x=0; this.y=0; this.percentHeight=1200; this.percentWidth=1000; //最大化状态 this.winState="max"; } else if(this.winState=="max") { //恢复正常状态下窗口位置、大小 this.x=this.normalX; this.y=this.normalY; this.width=this.normalWidth; this.height=this.normalHeight; //正常状态 this.winState="normal"; } } protected function OnMinSize(e:MouseEvent):void { //最小化,简单隐藏 this.visible=false; } override protected function layoutChrome(unscaledWidth:Number, unscaledHeight:Number):void { super.layoutChrome(unscaledWidth,unscaledHeight); //设置两个新添的按钮的位置 this.maxSizeButton.x=this.titleBar.width-43; this.minSizeButton.x=this.titleBar.width-60; //调整状态文本的位置,左移一段位置 this.statusTextField.x-=32; } } }