⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 window.as

📁 as3.0 翻书效果
💻 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 + -