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モードを修正してくれた著者に感謝します。
個人的なブログからの
クロスポスト 。