📄 qxml.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 + -