所有图片下载完成后,解析配置的frames,解析图集内包含的图片信息,为每个图片创建一个Texture,并将Texture放入到loadedMap中,key为图片原始路径。即使图片在图集中,也可以通过设置单张图片的url来获取图片资源。
将图集里所有的图片的url已数组的形式存入atlasmap中,key为图集地址。
if (type === ATLAS) { //处理图集 if (!data.src && !data._setContext) { //@处理.atlas文件 if (!_data) { this._data = data; //构造加载图片信息 if (data.meta && data.meta.image) { //带图片信息的类型 var toloadPics:Array = data.meta.image.split(","); var split:String = _url.indexOf("http://www.likecs.com/") >= 0 ? "http://www.likecs.com/" : "\\"; var idx:int = _url.lastIndexOf(split); var folderPath:String = idx >= 0 ? _url.substr(0, idx + 1) : ""; //idx = _url.indexOf("?"); //var ver:String; //ver = idx >= 0 ? _url.substr(idx) : ""; for (var i:int = 0, len:int = toloadPics.length; i < len; i++) { toloadPics[i] = folderPath + toloadPics[i]; } } else { //不带图片信息 toloadPics = [_url.replace(".json", ".png")]; } //保证图集的正序加载 toloadPics.reverse(); data.toLoads = toloadPics; data.pics = []; } event(Event.PROGRESS, 0.3 + 1 / toloadPics.length * 0.6); return _loadImage(toloadPics.pop()); } else { //处理图片 _data.pics.push(data); if (_data.toLoads.length > 0) { event(Event.PROGRESS, 0.3 + 1 / _data.toLoads.length * 0.6); //有图片未加载 return _loadImage(_data.toLoads.pop()); } var frames:Object = this._data.frames; var cleanUrl:String = this._url.split("?")[0]; var directory:String = (this._data.meta && this._data.meta.prefix) ? this._data.meta.prefix : cleanUrl.substring(0, cleanUrl.lastIndexOf(".")) + "http://www.likecs.com/"; var pics:Array = _data.pics; var atlasURL:String = URL.formatURL(this._url); var map:Array = atlasMap[atlasURL] || (atlasMap[atlasURL] = []); map.dir = directory; var scaleRate:Number = 1; if (this._data.meta && this._data.meta.scale && this._data.meta.scale != 1) { scaleRate = parseFloat(this._data.meta.scale); for (var name:String in frames) { var obj:Object = frames[name];//取对应的图 var tPic:Object = pics[obj.frame.idx ? obj.frame.idx : 0];//是否释放 var url:String = URL.formatURL(directory + name); tPic.scaleRate = scaleRate; cacheRes(url, Texture.create(tPic, obj.frame.x, obj.frame.y, obj.frame.w, obj.frame.h, obj.spriteSourceSize.x, obj.spriteSourceSize.y, obj.sourceSize.w, obj.sourceSize.h)); loadedMap[url].url = url; map.push(url); } }else{ for (name in frames) { obj = frames[name];//取对应的图 tPic = pics[obj.frame.idx ? obj.frame.idx : 0];//是否释放 url = URL.formatURL(directory + name); cacheRes(url, Texture.create(tPic, obj.frame.x, obj.frame.y, obj.frame.w, obj.frame.h, obj.spriteSourceSize.x, obj.spriteSourceSize.y, obj.sourceSize.w, obj.sourceSize.h)); loadedMap[url].url = url; map.push(url); } } delete _data.pics; /*[IF-FLASH]*/ map.sort(); complete(this._data); } 字体资源Laya有两种字体,一种是TTF字体一种是bitmapfont。
加载bitmapfont是先加载配置文件,再将.fnt改为.png去加载图片。资源都加在完成后,使用BitmapFont去解析图集字体信息。
TTF字体使用TTFLoader去加载,通过根据情况有多种加载方式,有使用FontFace方式,也有通过CSS等方式等。
var tArr:Array = fontPath.split(".ttf")[0].split("http://www.likecs.com/");
fontName = tArr[tArr.length - 1];
if (Browser.window.conch)
{
_loadConch();
}else
if (Browser.window.FontFace) {
this._loadWithFontFace()
}
else {
this._loadWithCSS();
}