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