root/as3/gunyarapaint/trunk/nicopedia/gunyarapaint/Com.as

リビジョン 1099, 5.6 kB (コミッタ: tasuku, コミット時期: 5 年 前)

r50@poppop (orig r49): tasuku | 2008-04-07 16:05:37 +0900
エラー処理周りを修正。

Line 
1 package gunyarapaint
2 {
3   import flash.display.DisplayObject;
4  
5   import mx.core.UIComponent;
6  
7   public class Com extends UIComponent
8   {
9     import flash.events.Event;
10     import flash.events.IOErrorEvent;
11     import flash.events.ProgressEvent;
12     import flash.events.SecurityErrorEvent;
13     import flash.utils.ByteArray;
14     import flash.events.HTTPStatusEvent;
15     import flash.events.IEventDispatcher;
16     import flash.display.Loader;
17     import flash.net.*;
18    
19     import mx.controls.Alert;
20    
21     import mx.managers.PopUpManager;
22    
23     private const ALERT_TITLE:String = 'ニコニコ大百科伝言班';
24    
25     private var postUrl:String;
26     private var cookie:String;
27     private var magic:String;
28  
29     private var urlLoader:URLLoader;
30     private var loader:Loader;
31    
32     private var errorStr:String;
33
34     public function Com()
35     {
36     }
37
38     public function setPostEnv(postUrl:String, cookie:String, magic:String):void {
39       this.postUrl = postUrl;
40       this.cookie = cookie;
41       this.magic = magic;
42     }
43    
44     public function postPico(name:String, msg:String, mml:String, ref_mml_id:uint):void {
45       var r:URLRequest = new URLRequest();
46       var v:URLVariables = new URLVariables();
47       r.url = postUrl;
48       r.method = URLRequestMethod.POST;
49       r.data = v;
50       v.magic = magic;
51       v.FROM = name;
52       v.MESSAGE = msg;
53       v.MML = mml;
54       v.ref_mml_id = ref_mml_id;
55       v.cookie = cookie;
56      
57       post(r);
58     }
59    
60     public static function redirect(url:String):void {
61       var r:URLRequest = new URLRequest();
62       r.url = url;
63       r.method = URLRequestMethod.GET;
64       navigateToURL(r, '_top');
65     }
66    
67     public static function redirectPicoForm(url:String, mml_id:uint):void {
68       var r:URLRequest = new URLRequest();
69       var v:URLVariables = new URLVariables();
70       r.url = url;
71       r.data = v;
72       r.method = URLRequestMethod.POST;
73       v.mml_id = mml_id;
74      
75       navigateToURL(r, '_top');
76     }
77    
78     public function postOekaki(name:String, msg:String,
79                                  image:ByteArray, log:ByteArray, ref_oekaki_id:uint):void {
80       var r:URLRequest = new URLRequest();
81       var v:URLVariables = new URLVariables();
82       var b:ByteArray = new ByteArray();
83      
84       v.cookie = cookie;
85       v.magic = magic;
86       v.FROM = name;
87       v.MESSAGE = msg;
88       v.ref_oekaki_id = ref_oekaki_id;
89       var form:String = v.toString();
90       b.writeUTFBytes(':' + form.length + '=' + form);
91       b.writeUTFBytes('&IMAGE:' + image.length + '=');
92       b.writeBytes(image);
93       b.writeUTFBytes('&IMAGE_LOG:' + log.length + '=');
94       b.writeBytes(log);
95       r.url = postUrl;
96       r.method = URLRequestMethod.POST;   
97       r.contentType = 'application/x-nicopedia-oekaki';
98       r.data = b;
99      
100       post(r);
101     }
102    
103     public static function navigate(url:String, target:String):void {
104       var r:URLRequest = new URLRequest();
105       r.url = url;
106       r.method = URLRequestMethod.POST;
107       navigateToURL(r, target);
108     }
109    
110     public function sendGetUrlRequest(url:String):void {
111       var r:URLRequest = new URLRequest();
112       r.url = url;
113       r.method = URLRequestMethod.GET;
114       post(r);
115     }
116    
117     private function post(request:URLRequest):void {
118       errorStr = null;
119       urlLoader = new URLLoader();
120       urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
121       configureListeners(urlLoader);
122       urlLoader.load(request);
123     }
124
125     public function loadUrl(url:String):void {
126       var r:URLRequest = new URLRequest();
127       r.url = url;
128       r.method = URLRequestMethod.GET;
129       load(r);
130     }
131
132     public function load(request:URLRequest):void {
133       loader = new Loader();
134       configureListeners(loader.contentLoaderInfo);
135       loader.load(request);
136     }
137    
138     private function configureListeners(dispatcher:IEventDispatcher):void {
139       // dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, postHttpStatusHandler);
140       dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, postSecurityErrorHandler);
141       dispatcher.addEventListener(IOErrorEvent.IO_ERROR, postIOErrorHandler);
142       dispatcher.addEventListener(Event.OPEN, postOpenHandler);
143       dispatcher.addEventListener(ProgressEvent.PROGRESS, postProgressHandler);
144       dispatcher.addEventListener(Event.COMPLETE, postCompleteHandler);           
145     }
146    
147     private function postSecurityErrorHandler(evt:SecurityErrorEvent):void {
148       errorStr = 'セキュリティエラーが発生しました。\n詳細:' + evt.text;
149       dispatchEvent(new Event('completeGetData'));
150     }
151     private function postIOErrorHandler(evt:IOErrorEvent):void {
152       // TODO: not event based, see URLLoader help
153       errorStr = 'ネットワークエラーが発生しました。\n詳細:' + evt.text;
154       dispatchEvent(new Event('completeGetData'));
155     }
156     private function postOpenHandler(evt:Event):void {
157     }
158     private function postProgressHandler(evt:ProgressEvent):void {
159       evt.bytesLoaded + evt.bytesTotal;
160     }
161     private function postCompleteHandler(evt:Event):void {
162       dispatchEvent(new Event('completeGetData'));
163     }
164     public function getData():ByteArray {
165       return urlLoader.data;
166     }
167     public function getStringData():String {
168       return urlLoader.data.toString();
169     }
170     public function getContent():DisplayObject {
171       return loader.content;
172     }
173     public function getErrorStr():String {
174       return errorStr;
175     }
176   }
177 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。