今日は、 活版印刷Webサービスの非常にシンプルなラッパーを作成します 。
いつものように、このトピックについてはあまり語りませんが、多くのコメントを付けたコードを提供します。
コードから、 air.URLRequestを介してリクエストを送信する方法について学習します。クリップボードを操作し、外部ブラウザーでリンクを開きます。
この記事は前の記事の続きであると想定しており、ExtJSを使用してAdobeAIRで美しく行いますが、すべてが同じままで、 application.jsの内容のみが変更されます。
var app = { _mainWindow:null、 _textarea:null、 _statusbar:null、 / * *初期化 * / init:function(){ window.nativeWindow.maximize(); app.doCreateMainWindow(); app.setupListeners(); window.nativeWindow.visible = true; }、 / * *イベントハンドラー * / setupListeners:関数(){ //ネイティブウィンドウイベント window.nativeWindow.addEventListener( 'displayStateChanging'、app.doDisplayStateChanging); //メインウィンドウイベント this._mainWindow.on( 'minimize'、app.doMinimize); this._mainWindow.on( 'close'、app.doClose); //テキストエリアのイベント this._textarea.on( 'specialkey'、app.doSpecialKey); }、 / * *メインウィンドウを作成する * / doCreateMainWindow:function(){ this._statusbar = new Ext.StatusBar({ //デフォルトのテキスト テキスト:「http://www.typograf.ru」、 アイテム:[ //区切り文字 「-」、 {//ステータスバーのブラウザボタンで開く テキスト:「ブラウザで開く」、 ハンドラー:関数(){ //ボタンをクリックすると、関数が実行されます //その意味は、デフォルトでブラウザでリンクを開くことです var request = new air.URLRequest( 'http://www.typograf.ru'); air.navigateToURL(リクエスト); } } ] }); this._textarea = new Ext.form.TextArea({ //デフォルトのテキスト emptyText: '入力するテキストを入力し、Ctrl + Enterを押します'、 地域:「中央」 }); this._mainWindow = new Ext.Window({ 幅:800、 高さ:600、 minWidth:300、 minHeight:200、 レイアウト: 'border'、 x:100、 y:100、 最小化可能:true、 最大化可能:true、 タイトル:「タイポグラファー」、 iconCls: 'icon'、 //ツールバー tbar:[ { テキスト:「バッファから貼り付け」、 ハンドラー:関数(){ //そして、本当にクリップボードにテキストがありますか? if(air.Clipboard.generalClipboard.hasFormat(air.ClipboardFormats.TEXT_FORMAT)){ //テキストを貼り付けます app._textarea.setValue( //バッファから=) air.Clipboard.generalClipboard.getData(air.ClipboardFormats.TEXT_FORMAT) ); } } }、 { テキスト:「クリップボードにコピー」、 ハンドラー:関数(){ //入力されたテキストを取得します var text = app._textarea.getValue(); //空の場合、何もしません if(テキスト== '') 帰る //クリップボードをクリアします air.Clipboard.generalClipboard.clear(); //そしてそこにデータをテキスト(TEXT_FORMAT)形式でコピーします air.Clipboard.generalClipboard.setData(air.ClipboardFormats.TEXT_FORMAT、テキスト); } }、 { テキスト:クリア ハンドラー:関数(){ //入力フィールドをクリアします app._textarea.reset(); } } ]、 //ステータスバー bbar:this._statusbar、 //テキスト入力フィールド アイテム:this._textarea }); this._mainWindow.show(); }、 / * *ウィンドウの状態変更のイベント処理 * @param {Event}イベントdisplayStateChanging * / doDisplayStateChanging:function(e){ if(e.afterDisplayState == 'normal'){ e.preventDefault(); window.nativeWindow.visible = false; window.nativeWindow.maximize(); window.nativeWindow.visible = true; } 他に if(e.afterDisplayState == 'minimized'){ e.preventDefault(); window.nativeWindow.visible = false; window.nativeWindow.minimize(); window.nativeWindow.visible = true; } }、 / * * _textareaでサービスキーを押すイベントの処理 * @param {Ext.form.TextField}要素 * @param {Event} keypressイベント * / doSpecialKey:関数(フィールド、e){ var keyCode = e.getKey(); if(keyCode == 13){ //この場合、キャリッジを移動する必要はありません e.preventDefault(); //テキストがあれば処理します if(app._textarea.getValue()!= '') app.doProcess(); } }、 / * *メインウィンドウの終了イベントの処理 * @param {Ext.window}ウィンドウ * / doClose:function(win){ air.NativeApplication.nativeApplication.exit(); }、 / * *メインウィンドウを最小化するイベント処理 * @param {Ext.window}ウィンドウ * / doMinimize:function(win){ window.nativeWindow.visible = false; window.nativeWindow.minimize(); window.nativeWindow.visible = true; }、 //タイポグラフィ処理 doProcess:function(){ this._textarea.disable(); this._statusbar.setStatus( 'Processing ...'); //ブートローダー var loader = new air.URLLoader(); //受信した情報をテキスト形式で認識します loader.dataFormat = air.URLLoaderDataFormat.TEXT; //データを受信するハンドラーを示します loader.addEventListener(air.Event.COMPLETE、app.doGetProcessed); //リクエスト var request = new air.URLRequest( 'http://www.typograf.ru/webservice/'); //サービスにデータを転送する方法を指定-投稿 request.method = air.URLRequestMethod.POST; //実際に、サービスに渡すものを示します request.data = 'chr = utf-8&text =' + this._textarea.getValue(); //行こう;) loader.load(リクエスト); }、 / * *サーバーからデータを受信する * @param {Event} event air.Event.COMPLETE * / doGetProcessed:関数(e){ //ローダーを取得 var loader = e.target; app._textarea.setValue(loader.data); app._textarea.enable(); app._statusbar.setStatus( 'http://www.typograf.ru'); } }
私は急いで書いています、多分何かを忘れました。 その場合はお気軽にお問い合わせください。
迷惑をかけたくないが、狩りを見たい人のために、インストールパッケージ (約400 kb)をダウンロードできます。
ご清聴ありがとうございました。
PSは記事とエアパッケージを更新しました。 utf-8モードを修正してくれた著者に感謝します。
個人的なブログからのクロスポスト 。