Archive for 3月, 2010

AIRのいいところは、標準にあるWindowをカスタマイズできるところです。
しかしながら、なかなか、手を出すのが面倒でやっていなかったのですが、ちょっと試してみました。

作ってみた画面は以下の通りです。
このような画面を作るのに、Javaなどで作るのは非常に面倒なのですが、AIRの場合には慣れてしまえば、HTMLを組んでいるように簡単に作れます。

このような画面も、なれないデザイン込みでまあ、一晩もあればなんとかなるというレベルです。

screen

さて、まず、カスタマイズをするために、いくつかの準備が必要です。

  1. アプリケーションのXMLでsystemChromeをnoneに設定します。
  2. アプリケーションのXMLで同じくtransparentをtrueに設定します。
  3. WindowedApplicaitonのshowFlexChromeをfalseに設定します。

これで、完全にデフォルトのコントロールが外れましたので、後は自分で部品を作っていきそれらを並べればいいというわけです。

でも、このようにカスタマイズすることで、自由に配置できるのはいいのですが、このために以下のようなことは自分で処理を書かなくてはいけません。

  • ウィンドウの最小化・戻す・最大化・閉じる(右はじのボタンたち)
  • ウィンドウの移動
  • ウィンドウのリサイズ

ただ、メソッドを呼ぶだけでこれらの機能が実現できるので、あまり心配はいりません。
ウィンドウの最小化、戻す、最大化、閉じるは、
NativeWindowの

minimize();
restore();
maximize();
close();

で実現できますし、ウィンドウの移動は、startMove() でできますが、もともと、上部のバーを消してしまったので、私はロゴマークか、もしくは、濃い青い部分でmouseDownしたら移動ができるようにしてみました。

<mx :HBox top="10" left="15">
  <mx :Image source="@Embed('assets/logo.png')" mouseDown="nativeWindow.startMove()" useHandCursor="true" />
</mx>

あと、リサイズは小さくて見えずらいのですが、左下に△のしるしを置き、そこでmouseDownしたときにstartResize()が動かせばリサイズができるようになります。

startResize();

airのHTMLコンポーネント(mx.controls.HTML)で、ローカルにあるHTMLファイルを読みたい。

この場合、には、

var file:File = File.desktopDirectory.resolvePath("index.html");
var browser:HTML = new HTML();
browser.location = "file:///" + escapeMultiByte(file.nativePath);

のように、頭にfile:/// をつけるのと、パスに日本語が含まれることを考え、escapeMultibyte()関数を使ってあげればよい。

ただ、これを使うと、そこまでエンコードしなくてもというところまでエンコード(エスケープ)されるが、見えるので問題はない。

それと、ローカルにあるファイルゆえに発生する問題がある。
文字コードがHTTPのヘッダで指定できるわけではないので、HTMLファイル自体にキチンと文字コードをmetaタグに書いてあれば問題ないが、
記述がない場合にはたいていの場合には文字化けを起こすだろう。

この場合には、ブラウザ側で文字コードを指定しなければならないが、残念ながらHTMLのクラスを見ていても直接の設定はない。
この場合には、内部のプロパティである、htmlLoaderオブジェクトを通して設定する必要がある。

browser.htmlLoader.textEncodingOverride = "Shift_JIS";

とこんな感じだ。

ソフトウェア&ライブラリ



ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
カレンダー
2010年3月
« 2月   4月 »
1234567
891011121314
15161718192021
22232425262728
293031  

カスタム検索
RSS
Add to Google
にほんブログ村 IT技術ブログへ