/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

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