チェンジセット 1562
- コミット日時:
- 2008/10/10 12:51:07 (5 年前)
- ファイル:
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint.as
r1555 r1562 48 48 parameters['baseImgInfoUrl'] = 'http://dic.dev.nicovideo.jp/oekaki_info/31'; 49 49 */ 50 parameters['postUrl'] = 'http://dic.dev.nicovideo.jp/' 51 parameters['cookie'] = 'cookie' 52 parameters['magic'] = 'magic' 53 parameters['redirectUrl'] = 'http://dic.dev.nicovideo.jp/' 54 parameters['undoBufferSize'] = 16; 55 parameters['canvasWidth'] = 317; 56 parameters['canvasHeight'] = 317; 57 // debug buttons 58 logPlayButton.addEventListener(FlexEvent.BUTTON_DOWN, playLogHandler); 59 logPlayButton.visible = true; 60 checkPngButton.visible = true; 50 61 } 51 62 … … 103 114 } 104 115 } else { 105 if (DEBUG) { 106 undoBufferSize = 16; 107 } else { 108 return; 109 } 116 return; 110 117 } 111 118 if (parameters['oekakiId'] && parameters['baseImgUrl']) { … … 125 132 } 126 133 } else { 127 if (DEBUG) { 128 width = 100; height = 100; 129 postOekakiButton.enabled = true; 130 } else { 131 return; 132 } 134 return; 133 135 } 134 136 _logger = GPLogger.createForDraw(width, height, undoBufferSize, null, null); 135 137 initGunyaraPaintCanvas(); 136 138 } 137 138 if (DEBUG) {139 logPlayButton.addEventListener(FlexEvent.BUTTON_DOWN, playLogHandler);140 // checkPngButton.addEventListener(FlexEvent.BUTTON_DOWN, checkPngHandler);141 logPlayButton.visible = true;142 checkPngButton.visible = true;143 }144 139 } 145 140 … … 179 174 } 180 175 } 176 private function set allEnabled(value:Boolean):void { 177 this.enabled = value; 178 gpCanvasWindow.enabled = value; 179 penDetailWindow.enabled = value; 180 gpLayerWindow.enabled = value; 181 } 181 182 private function initGunyaraPaintCanvas():void { 182 183 toolCanvas.x = (this.width - toolCanvas.width) / 2; 183 184 this.enabled = true; 185 gpCanvasWindow.enabled = true; 186 penDetailWindow.enabled = true; 187 gpLayerWindow.enabled = true; 184 allEnabled = true; 188 185 } 189 186 … … 219 216 } 220 217 221 private function commCompleteHandler(com:Com):void {222 if (com.errStr) {223 // error224 Alert.show(com.errStr, ALERT_TITLE);225 this.enabled = true;226 } else if (com.data.toString() != '') {227 Alert.show(com.data.toString(), ALERT_TITLE);228 this.enabled = true;229 } else {230 // redirect231 Com.redirect(redirectUrl);232 }233 }234 235 218 private function canvasZoomHandler(evt:SliderEvent):void { 236 219 gpCanvasWindow.zoomCanvas(evt.value); … … 273 256 } 274 257 258 private function commCompleteHandler(com:Com):void { 259 try { 260 if (com.errStr) { 261 // error 262 Alert.show(com.errStr, ALERT_TITLE); 263 } else if (com.data.toString() != '') { 264 Alert.show(com.data.toString(), ALERT_TITLE); 265 } else { 266 // redirect 267 Com.redirect(redirectUrl); 268 } 269 } catch (e:Error) { 270 Alert.show('何かしらのエラーが起きました…再投稿お願いいたします。', ALERT_TITLE); 271 } 272 allEnabled = true; 273 } 274 275 275 private function postOekakiButtonHandler(evt:Event):void { 276 276 if (messageTextArea.text == '') { … … 282 282 return; 283 283 } 284 this.enabled = false;284 allEnabled = false; 285 285 var com:Com = new Com(); 286 com.postOekaki(parameters['postUrl'], 286 com.postOekaki(this, 287 parameters['postUrl'], 287 288 parameters['magic'], 288 289 parameters['cookie'], as3/gunyarapaint/trunk/nicopedia/org/libspark/nicopedia/Com.as
r1500 r1562 7 7 8 8 import mx.core.UIComponent; 9 import mx.events.FlexEvent; 9 10 10 11 public class Com extends UIComponent … … 33 34 private var errorStr:String; 34 35 35 private var comDialog:ComDialog;36 private var _comDialog:ComDialog; 36 37 37 38 public function Com() { … … 87 88 } 88 89 89 public function postOekaki(url:String, magic:String, cookie:String, name:String, msg:String, ref_oekaki_id:uint, data:Object, callback:Function):void { 90 91 PopUpManager.createPopUp(this, ComDialog, true); 92 93 var r:URLRequest = new URLRequest(); 94 var v:URLVariables = new URLVariables(); 95 var b:ByteArray = new ByteArray(); 96 var info:ByteArray = new ByteArray(); 97 info.writeUTFBytes(JSON.encode(data['info'])); 98 v.cookie = cookie; 99 v.magic = magic; 100 v.FROM = name; 101 v.MESSAGE = msg; 102 v.ref_oekaki_id = ref_oekaki_id; 103 v.log_count = data['info']['log_count']; // TODO: サーバ側で取り出してあげる 104 var form:String = v.toString(); 105 b.writeUTFBytes(':' + form.length + '=' + form); 106 b.writeUTFBytes('&IMAGE:' + data['image'].length + '='); 107 b.writeBytes(data['image']); 108 b.writeUTFBytes('&IMAGE_LOG:' + data['compressed_log'].length + '='); 109 b.writeBytes(data['compressed_log']); 110 b.writeUTFBytes('&IMAGE_LAYERS:' + data['layers_image'].length + '='); 111 b.writeBytes(data['layers_image']); 112 b.writeUTFBytes('&IMAGE_INFO:' + info.length + '='); 113 b.writeBytes(info); 114 r.url = url; 115 r.method = URLRequestMethod.POST; 116 r.contentType = 'application/x-nicopedia-oekaki'; 117 r.data = b; 118 119 this.callback = callback; 120 post(r); 90 public function postOekaki(parent:DisplayObject, url:String, magic:String, cookie:String, name:String, msg:String, ref_oekaki_id:uint, data:Object, callback:Function):void { 91 try { 92 _comDialog = new ComDialog(); 93 PopUpManager.addPopUp(_comDialog, parent, true); 94 _comDialog.cancelButton.addEventListener(FlexEvent.BUTTON_DOWN, cancelHandler); 95 96 var r:URLRequest = new URLRequest(); 97 var v:URLVariables = new URLVariables(); 98 var b:ByteArray = new ByteArray(); 99 var info:ByteArray = new ByteArray(); 100 info.writeUTFBytes(JSON.encode(data['info'])); 101 v.cookie = cookie; 102 v.magic = magic; 103 v.FROM = name; 104 v.MESSAGE = msg; 105 v.ref_oekaki_id = ref_oekaki_id; 106 v.log_count = data['info']['log_count']; // TODO: サーバ側で取り出してあげる 107 var form:String = v.toString(); 108 b.writeUTFBytes(':' + form.length + '=' + form); 109 b.writeUTFBytes('&IMAGE:' + data['image'].length + '='); 110 b.writeBytes(data['image']); 111 b.writeUTFBytes('&IMAGE_LOG:' + data['compressed_log'].length + '='); 112 b.writeBytes(data['compressed_log']); 113 b.writeUTFBytes('&IMAGE_LAYERS:' + data['layers_image'].length + '='); 114 b.writeBytes(data['layers_image']); 115 b.writeUTFBytes('&IMAGE_INFO:' + info.length + '='); 116 b.writeBytes(info); 117 r.url = url; 118 r.method = URLRequestMethod.POST; 119 r.contentType = 'application/x-nicopedia-oekaki'; 120 r.data = b; 121 122 this.callback = callback; 123 post(r); 124 } catch (e:Error) { 125 errorStr = '投稿準備時にエラーが起こりました。ほかのアプリケーションを終了して空きメモリ容量を増やした上で、再度投稿してください。'; 126 callback(this); 127 } 121 128 } 122 129 … … 165 172 166 173 private function postSecurityErrorHandler(evt:SecurityErrorEvent):void { 167 errorStr = 'セキュリティエラーが発生しました。 \n詳細:' + evt.text;168 dispatchEvent(new Event('completeGetData'));174 errorStr = 'セキュリティエラーが発生しました。通信が許可されていません。通常このエラーは起きません。\n詳細:' + evt.text; 175 postCompleteHandler(evt); 169 176 } 170 177 private function postIOErrorHandler(evt:IOErrorEvent):void { 171 178 // TODO: not event based, see URLLoader help 172 errorStr = 'ネットワークエラーが発生しました。 \n詳細:' + evt.text;173 dispatchEvent(new Event('completeGetData'));179 errorStr = 'ネットワークエラーが発生しました。混雑や一時的なメンテナンスの可能性がございます。お手数ですが、再度投稿お願いいたします。\n詳細:' + evt.text; 180 postCompleteHandler(evt); 174 181 } 175 182 private function postOpenHandler(evt:Event):void { 176 183 } 177 184 private function postProgressHandler(evt:ProgressEvent):void { 178 evt.bytesLoaded + evt.bytesTotal; 185 _comDialog.comProgressBar.setProgress(evt.bytesLoaded, evt.bytesTotal); 186 } 187 188 private function cancelHandler(evt:Event):void { 189 try { 190 urlLoader.close(); 191 } catch (e:Error) {} 192 errorStr = '投稿をキャンセルしました。すでに投稿がなされている場合もあります。'; 193 postCompleteHandler(evt); 179 194 } 180 195 private function postCompleteHandler(evt:Event):void { 181 if ( comDialog) {182 PopUpManager.removePopUp( comDialog);183 comDialog = null;196 if (_comDialog) { 197 PopUpManager.removePopUp(_comDialog); 198 _comDialog = null; 184 199 } 185 200 callback(this); as3/gunyarapaint/trunk/nicopedia/org/libspark/nicopedia/ComDialog.mxml
r1180 r1562 3 3 <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" 4 4 title="ニコニコ大百科通信班" x="168" y="86" 5 showCloseButton="false" 6 close="removeMe();" width="288" height="184" backgroundColor="#FFFFFF" layout="absolute" horizontalAlign="center"> 7 <mx:ProgressBar x="10" y="12" label="カキコ中…" labelPlacement="center" width="248"/> 5 showCloseButton="false" width="288" height="104" backgroundColor="#FFFFFF" layout="absolute" horizontalAlign="center"> 6 <mx:ProgressBar id="comProgressBar" x="10" y="12" label="カキコ中…" labelPlacement="center" width="248"/> 8 7 <mx:Script> 9 import org.libspark.nicopedia.Com; 10 import mx.managers.PopUpManager; 11 12 private function removeMe():void { 13 PopUpManager.removePopUp(this); 14 } 8 <![CDATA[ 9 ]]> 15 10 </mx:Script> 16 <mx: TextArea id="ret" x="54" y="47" height="87"/>11 <mx:Button id="cancelButton" x="95.5" y="36" label="キャンセル"/> 17 12 </mx:TitleWindow>

