-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathResourceLoader.as
81 lines (74 loc) · 2.56 KB
/
ResourceLoader.as
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.ProgressEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class ResourceLoader
{
private var urlLoaderList:Array = new Array();
private var bmpLoaderList:Array = new Array();
private var urlLoader:URLLoader = new URLLoader();
private var bmpLoader:Loader = new Loader();
private var xml:XML = new XML();
private var bitmap:Bitmap = new Bitmap();
private var xmlCounter:int = 0;
private var bmpCounter:int = 0;
private static var _instance:ResourceLoader = new ResourceLoader();
public static function get Instance():ResourceLoader//делаем синглетон
{
trace("getInstance");
return _instance;
}
public function ResourceLoader()
{
trace("ResourceConstructor");
if(_instance)
throw new Error("Use Instance Field");
}
public function LoadXML(URL:String):void
{
xmlCounter++;
this.urlLoaderList[xmlCounter] = new URLLoader();
this.urlLoaderList[xmlCounter].addEventListener(Event.COMPLETE,XmlLoadCompleteListener);
this.urlLoaderList[xmlCounter].load(new URLRequest(URL));
}
private function XmlLoadCompleteListener(e:Event):void
{
var xml:XML = new XML(e.target.data);
trace(xml);
trace(xml.name());
if(xml.name() == "Config")
XMLParser.Instance.GameSetup(xml);
else if(xml.name() == "GraphicsSet")
XMLParser.Instance.GraphicsPoolSetup(xml);// заполняем пул графикой(pool)
else if (xml.name() == "Level")
XMLParser.Instance.LevelSetup(xml);//Заполняем коллекцию объектов(assets)
else
throw new Error("i do not know this");
urlLoader.removeEventListener(Event.COMPLETE,XmlLoadCompleteListener);
}
public function LoadBitmap(URL:String):void
{
bmpCounter++;
this.bmpLoaderList[bmpCounter] = new Loader();
this.bmpLoaderList[bmpCounter].contentLoaderInfo.addEventListener(Event.INIT,BitmapLoaderInitListener);
this.bmpLoaderList[bmpCounter].load(new URLRequest(URL));
}
private function BitmapLoaderInitListener(e:Event):void
{
trace("IN BITMAP LOADER");
var content:GameGraphics = new GameGraphics;
content.bitmap = Bitmap(e.target.content);
content.type = e.target.url;
GraphicsPool.Instance.Graphics.push(content);
if(GraphicsPool.Instance.Graphics.length == bmpCounter)
GameObjectPool.Instance.ApplyBitmapData();
}
}
}