PageRenderTime 26ms CodeModel.GetById 16ms app.highlight 8ms RepoModel.GetById 1ms app.codeStats 0ms

/src/br/com/stimuli/loading/loadingtypes/JSONItem.as

https://bitbucket.org/HopeSky/mars_nd2d
ActionScript | 94 lines | 77 code | 15 blank | 2 comment | 2 complexity | 509f86a1da9e75a5f56b8659c367319b MD5 | raw file
 1package br.com.stimuli.loading.loadingtypes {
 2
 3    import br.com.stimuli.loading.loadingtypes.LoadingItem;
 4    import br.com.stimuli.loading.BulkLoader;
 5
 6
 7    import flash.display.*;
 8    import flash.net.*;
 9    import flash.events.*;
10    import flash.utils.*;
11    import com.adobe.serialization.json.JSON
12        /** @private */
13        public class JSONItem extends LoadingItem {
14
15            public var loader : URLLoader;
16
17            public function JSONItem(url : URLRequest, type : String, uid : String){
18                super(url, type, uid);
19            }
20
21            override public function _parseOptions(props : Object)  : Array{
22                return super._parseOptions(props);
23            }
24
25            override public function load() : void{
26                super.load();
27                loader = new URLLoader();
28                loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true);
29                loader.addEventListener(Event.COMPLETE, onCompleteHandler, false, 0, true);
30                loader.addEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false, 0, true);
31                loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false, 0, true);
32                loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false, 0, true);
33                loader.addEventListener(Event.OPEN, onStartedHandler, false, 0, true);
34                try{
35                    // TODO: test for security error thown.
36                    loader.load(url);
37                }catch( e : SecurityError){
38                    onSecurityErrorHandler(_createErrorEvent(e));
39
40                }
41            };
42
43            override public function onErrorHandler(evt : ErrorEvent) : void{
44                super.onErrorHandler(evt);
45            }
46
47            override public function onStartedHandler(evt : Event) : void{
48                super.onStartedHandler(evt);
49            };
50
51            override public function onCompleteHandler(evt : Event) : void {
52                try{
53                    _content = JSON.decode(loader.data);
54                }catch(e  : Error){
55                    _content = null;
56                    status = STATUS_ERROR;  
57                    dispatchEvent(_createErrorEvent(e));
58                }
59                super.onCompleteHandler(evt);
60            };
61
62            override public function stop() : void{
63                try{
64                    if(loader){
65                        loader.close();
66                    }
67                }catch(e : Error){
68                }
69                super.stop();
70            };
71
72            override public function cleanListeners() : void {
73                if(loader){
74                    loader.removeEventListener(ProgressEvent.PROGRESS, onProgressHandler, false);
75                    loader.removeEventListener(Event.COMPLETE, onCompleteHandler, false);
76                    loader.removeEventListener(IOErrorEvent.IO_ERROR, onErrorHandler, false);
77                    loader.removeEventListener(BulkLoader.OPEN, onStartedHandler, false);
78                    loader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, super.onHttpStatusHandler, false);
79                    loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, super.onSecurityErrorHandler, false);
80                }
81            }
82
83            override public function isText(): Boolean{
84                return true;
85            }
86
87            override public function destroy() : void{
88                stop();
89                cleanListeners();
90                _content = null;
91                loader = null;
92            }
93        }
94}