📄 window.as
字号:
package crlclr.ui{
import crlclr.Event.winEvent;
import flash.net.URLRequest;
import flash.events.*;
import flash.text.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.Timer;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent ;
public class window extends Sprite {
private var title:String;
private var container:Sprite;
protected var w:int=100;
protected var h:int=100;
private var padX:int=20;
private var padY:int=30;
private var ellipse:int=10;
private var bg:Sprite;
public var bgFront:Shape;
private var header:Sprite;
private var headerbg:Sprite;
private var headerRightContainer:Sprite;
private var titleF:TextField;
protected var min:SimpleButton;
protected var exit:SimpleButton;
private var currentMin:Boolean=false;
private var content:Sprite;
private var loader:Loader;
protected var g:Graphics;
public function window(title:String) {
this.title=title;
init();
createChildren();
bindEvent();
draw();
}
protected function init():void {
container=new Sprite();
addChild(container);
}
public function loadContent(path:String):void {
var urlRequest:URLRequest=new URLRequest(path);
loader=new Loader();
loader.load(urlRequest);
loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
//loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
private function initHandler(event:Event):void {
var timer:Timer=new Timer(250,1);
timer.addEventListener(TimerEvent.TIMER,reInit);
timer.start();
}
private function reInit(event:Event):void {
event.target.removeEventListener(TimerEvent.TIMER,reInit);
var info:LoaderInfo = LoaderInfo(loader.contentLoaderInfo);
info.removeEventListener(Event.INIT, initHandler);
content.addChild(loader);
loader.x=padX;
loader.y=padY;
w=loader.width+padX*2;
h=loader.height+padY*2-(padY-padX);
resize();
stage.addEventListener(Event.RESIZE ,resizeHander);
}
protected function createChildren():void {
bg=new Sprite ;
bgFront=new Shape() ;
header=new Sprite ;
content=new Sprite ;
//容器背景;
container.addChild(bg);
bg.addChild(bgFront);
bgFront.x=bgFront.y=padX-5;
container.addChild(header);
//标题栏;
titleF=new TextField();
titleF.name="title";
titleF.text=title;
titleF.background=true;
titleF.selectable=false;
titleF.autoSize=TextFieldAutoSize.LEFT;
titleF.backgroundColor=0xE31E5C;
titleF.setTextFormat(textFormat());
headerRightContainer=new Sprite();
//关闭按钮;
exit=new Exit() as SimpleButton;
min=new Min() as SimpleButton;
//headerbg;
headerbg=new Sprite();
header.addChild(headerbg);
header.addChild(titleF);
header.addChild(headerRightContainer);
headerRightContainer.addChild(min);
headerRightContainer.addChild(exit);
container.addChild(content);
}
protected function bindEvent():void {
exit.addEventListener(MouseEvent.CLICK,clickHander);
min.addEventListener(MouseEvent.CLICK,clickHander);
headerbg.addEventListener(MouseEvent.MOUSE_DOWN,downHander);
headerbg.addEventListener(MouseEvent.MOUSE_UP,upHander);
headerbg.doubleClickEnabled=true;
headerbg.addEventListener(MouseEvent.DOUBLE_CLICK,doubleHander);
}
private function downHander(event:Event):void {
this.startDrag(false);
}
private function upHander(event:Event):void {
this.stopDrag();
}
private function doubleHander(event:Event):void{
min.dispatchEvent(new MouseEvent(MouseEvent.CLICK))
}
protected function clickHander(event:Event):void {
if (event.target==exit) {
this.close();
return;
}
if (event.target==min) {
this.scaleMin();
}
}
private function scaleMin():void {
currentMin=!currentMin;
var twn:Tween;
var newx:int;
new Tween(min,"scaleY",Regular.easeIn,min.scaleY,-1*min.scaleY,6,false);
if(currentMin){
//先把影片隐藏;然后最小化;
twn=new Tween(content,"alpha",Regular.easeIn,content.alpha,0,6,false);
twn.addEventListener(TweenEvent.MOTION_FINISH,
function a()
{
content.visible=false;
newx=int(titleF.width+padX+header.x*2);
new Tween(headerRightContainer,"x",Regular.easeIn,headerRightContainer.x,newx,12,false);
new Tween(bg,"height",Regular.easeIn,bg.height,padY*3,12,false);
newx=int(titleF.width+headerRightContainer.width+padX*2)
new Tween(bg,"width",Regular.easeIn,bg.width,newx,12,false);
}
)
}else{
//先把最大化;然后出现影片;
content.visible=true;
twn=new Tween(bg,"height",Regular.easeIn,bg.height,h,12,false);
new Tween(bg,"width",Regular.easeIn,bg.width,w,12,false);
newx=int(w-headerRightContainer.width-padX/2);
new Tween(headerRightContainer,"x",Regular.easeIn,headerRightContainer.x,newx,12,false);
twn.addEventListener(TweenEvent.MOTION_FINISH,
function a()
{
new Tween(content,"alpha",Regular.easeIn,content.alpha,1,6,false);
}
)
}
}
private function textFormat():TextFormat {
var mTextFormat = new TextFormat();
mTextFormat.size = 12;
mTextFormat.font = "Verdana";
mTextFormat.color = 0xffffff;
return mTextFormat;
}
protected function resizeHander(event:Event):void {
//this.resize();
}
protected function resize():void {
bg.height=h;
header.x=header.y=5;
headerbg.width=(bg.width=w)-(exit.width+padX);
exit.x=min.width*2;
headerRightContainer.y=int(headerRightContainer.height/2+header.y);
headerRightContainer.x=int(w-headerRightContainer.width-padX/2);
//center();
}
/**
* 让窗体居中;
* @return
*/
public function center():void {
container.x=Math.floor((stage.stageWidth-container.width)/2);
container.y=Math.floor((stage.stageHeight-container.height)/2);
}
/**
* 关闭窗体;
* @return
*/
public function close():void {
var event:winEvent=new winEvent(winEvent.CLOSE);
dispatchEvent(event);
stage.removeEventListener(Event.RESIZE ,resizeHander);
loader.unload();
parent.removeChild(this);
}
/**
* 画出窗体所显示外框;
* @return
*/
protected function draw():void{
g=headerbg.graphics;
g.beginFill(0,0);
g.drawRect(0,0,w-padX/2,titleF.height);
g=bg.graphics;
g.beginFill(0xFFFFFF,100);
g.drawRoundRect(0,0,w,h,ellipse);
g=bgFront.graphics;
g.beginFill(0xEAECEE,100);
g.drawRoundRect(0,10,70,60,ellipse);
bg.scale9Grid=new Rectangle(20,35,60,30);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -