air.Typograf

Adobe AIRを使用して簡単なアプリケーションを作成し 、美しいウィンドウ作成する方法を既に学習しました。次に、実際のタスクを設定して実装を試みます。

今日は、 活版印刷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モードを修正してくれた著者に感謝します。



個人的なブログからのクロスポスト



All Articles