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

📄 qxml.as

📁 as3.0 翻书效果
💻 AS
字号:
/**
* xml类,作为单件
* @author crlnet
* @version 1.1
*/

package crlclr {
	
	import crlclr.data.*;
	import flash.events.*;
	import flash.events.EventDispatcher;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLLoaderDataFormat;
	
	public class Qxml extends EventDispatcher {
		
		
		public var LocationPath:String="";
		
		private var path:String;
		private var xml:XML;
		
		/*版本,标题,编辑者,缩放方式,是否出现滚动条*/
		
		private var version:String="WEB";
		private var zoomW:String="D"
		private var editor:String;
		private var title:String;
		private var passwordPage:int;
		private var scroll:Boolean=true;
		
		private var pageDataList:Array;
		
		private var pageWidth:int=300;
		private var pageHeight:int=300;
		
		private var bgInfo:BgInfor;
		public var bgSoundInfo:BgSound;
		
		private var loaded:Boolean=false;
		public static var ONLOAD:String="onLoad";
		public static var Instance:Qxml = new Qxml();
		
		public function Qxml(){
			
			if(Instance!=null){
				throw new Error("单件");
			}
			
		}
		
		public static function getInstance():Qxml{
			return Instance;
		}
		
		public function load(path:String):void{
			this.path=path;
			
			var loader:URLLoader=new URLLoader();
			loader.dataFormat=URLLoaderDataFormat.TEXT;
			var urlRequest:URLRequest=new URLRequest();
			urlRequest.url=this.path;
			
			loader.addEventListener(Event.COMPLETE,completeHander);
			loader.load(urlRequest);
		}
		
		private function completeHander(event:Event){
			xml=new XML(event.target.data);
			this.bulidXML();
			this.loaded=true;
			this.dispatchEvent(new Event(Qxml.ONLOAD));
		}
		
		/**
		* 开始把数据存入内存;
		*/
		private function bulidXML(){
			
			pageDataList=new Array();
			
			var list:XMLList;
			
			this.version=xml.@version;
			this.editor=xml.editor||"crlnet";
			this.zoomW=xml.zoomWith||this.zoomW;
			this.title=xml.title;
			this.scroll=Boolean(xml.body.@scroll);
			
			this.pageWidth=int(xml.width);

			this.pageHeight=int(xml.height);
			
			//背景;
			this.bgInfo=new BgInfor();
			list=xml.bg;
			
			this.bgInfo.Alpha=list.@alpha;
			
			//判断是否为网络上的图片,如果不是则添加相对路径;
			this.bgInfo.Path=FileInfo.isOnlineFile(list+"")?list:LocationPath+list;
			this.bgInfo.Repeat=list.@repeat;
			
			//音乐;
			list=xml.bgSound;
			var loop:int=int(list.@loop);
			//判断是否为网络上的音乐,如果不是则添加相对路径;
			var path:String=FileInfo.isOnlineFile(list+"")?list:LocationPath+list;
			var autoStart:Boolean=Boolean(list.@autoStart)
			this.bgSoundInfo=new BgSound(path,autoStart,loop);
			
			bulidPage(xml.body.page)
			
		}
		
		/**
		* 取得媒体.并存储;
		* @param	list
		*/
		private function bulidPage(list:XMLList){
			
			var pageData:PageData;
			
			for each(var i:XML in list){
				
				pageData=new PageData();
				
				pageData.Thumb=i.thumb.text();
				pageData.Ipage=i.url;
				pageData.Descript=i.discript;
				
				pageData.HotAreaList=bulidHotArea(i.map.area);
				pageData.InnerMediaList=bulidInnerMedia(i.img.area);
				this.pageDataList.push(pageData);
			}
		}
		
		/**
		* 取得热区数组,并存储以便以媒体进行对应;
		* @param	list
		*/
		private function bulidHotArea(list:XMLList):Array{
			var hotAreaList:Array=new Array();
			for each(var i:* in list){
					var shape:String=i.@shape;
					var coords:Array=i.@coords;
					var alt:String=i.@alt;
					var href:String=i;
					
					var singleHotArea:HotAreaInfo=new HotAreaInfo(shape,coords,href,alt);
					
					hotAreaList.push(singleHotArea)
			}
			
			return hotAreaList;
		}
		
		/**
		* 取得内嵌影片数组,并存储以便以媒体进行对应;
		* @param	list
		*/
		private function bulidInnerMedia(list:XMLList):Array{
			
			var innerMediaList:Array=new Array();
			
			for each(var i:* in list){
				var coords:Array=i.@coords.toString().split(",");
				var alt:String=i.@alt;
				var path:String=i;
					
				var singleMovie:InnerMediaInfo=new InnerMediaInfo(LocationPath+""+path,alt,coords);
				innerMediaList.push(singleMovie)
			}
			
			return innerMediaList
		}
		
		public function get Loaded():Boolean{
			return this.loaded;
		}
		
		public function get ZoomWith():String{
			return this.zoomW;
		}
		
		public function SerrisePageIndex():int{
			return this.passwordPage;
		}
		
		public function get Editor():String{
			return this.editor;
		}
		public function get Path():String{
			return this.path;
		}
		public function get Length():int{
			return this.pageDataList.length;
		}
		public function get Version():String{
			return this.version;
		}
		public function get Title():String{
			return this.title;
		}
		public function get Scroll():Boolean{
			return this.scroll==true;
		}
		public function get PageWidth():int{
			return this.pageWidth;
		}
		public function get PageHeight():int{
			return this.pageHeight;
		}
		
		/**
		* 让他只读,不破坏它的数据组构;
		* @return
		*/
		public function get PageDataList():Array{
			return this.pageDataList;
		}
		
		public override function toString():String{
			return "Qxml 1.1";
		}
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -