2008年04月16日
AIR作ってます。もう判らんことだらけで、ヒーヒー云ってますが。
サンプルはもう色々出てるのですが、勉強するにはやはり自分で作ってみるのが一番です。
Flex3で製作してますが、あるプロジェクトだけずーっと「デバッガへの接続が確立されずにプロセスが終了しました」エラーに悩まされいて、ようやく原因が判明しました。
app.xmlの<id<</id<に_(アンダースコア)や-(ハイフン)が入っていると出ちゃうらしい。
プロジェクト名に_を入れてたので引っかかっていた。
これからは_使いません。
なんだか下らん理由で時間を無駄にしてしまったけどスッキリ。
色々やっててどうやら判ってきた…。
ウィンドウ枠をなくすために
mx:Applicationを使った場合は
app.xmlで
<systemChrome>none</systemChrome>
<transparent>true</transparent>
<visible>true</visible>
としなければならないみたい。
環境によって現象が違ったりしたのでなんだか気持ち悪いのだけど、
パッケージ化したAIRがit damegedとなってインストールできなかったり、デバックしたらデバッガへの接続が確立されずに…となったり。
とにかく未だ要検証。
AIRの開発環境がApollo→β→AIR1.0と目まぐるしく変わったせいかウェブのドキュメントがあまり役にたたずw 変更点がいくつもあって追いきれませーん。
Flexも開発環境として便利そうだし、これからAIRの開発はFlexメインになりそう。
FlashCS3のAIR Extensionも試してみたけどとても簡単そう。
なにか簡単なガジェットでもつくってみるとします。
2008年05月01日
AIRにはwebkitというブラウザエンジンが組み込まれています。
なのでブラウザが出来る!というわけで作ってみました。
開発環境はFlashCS3で!Flexは今のところmxmlがちょいと難しいです。
web上でサンプルプログラムが転がっていますが、ベータ版の時のもののようでそのまま動かそうと思ってもできないものがあります。
AIR開発時に躓くのがこういうところのようでWeb上のドキュメントが古いために開発に手間取ってしまう場合が現状多々あり…。例えばHTMLControlというクラスがHTMLLoaderに変更になっていたりとか。
リファレンスを見ればいいと思うかと思いますが、FlashCS3のリファレンスはAIR関連のクラスがリファレンスが未掲載だったりorz、Flexを見てみたら英語であったり。
そんな感じの中で重宝しているのが
http://livedocs.adobe.com/flex/3_jp/langref/
です。
ところでなんかリファンレンス使いづらくないですかね?
とりあえずNEXT、BACKボタンとアドレス表示、URL変更ジャンプくらいの機能をつけてみる。
独自の機能を盛り込んでいこうと企み中。
新しいUIの提案が出来るようなものを作りたいなぁ。
一応ソース公開。
ソース
-----------------------------------------------------
import flash.html.HTMLLoader;
import flash.net.URLRequest;
//stage設定
stage.align = "TL";
stage.scaleMode = StageScaleMode.NO_SCALE;
//読み込む外部HTMLデータの設定
var urlReq:URLRequest = new URLRequest("http://www.yahoo.co.jp/");
//HTMLデータの読み込みと表示設定
var html:HTMLLoader = new HTMLLoader();
html.load(urlReq);
html.y = 34;
HTMLlocation.text = html.location;
html.width = stage.stageWidth;
html.height = stage.stageHeight-100;
html.addEventListener(Event.COMPLETE,COMPLETE);
html.addEventListener(Event.LOCATION_CHANGE ,CHANGE);
stage.addChild(html);
//初期設定
stage.addEventListener(Event.RESIZE,Resize);
HTMLlocation.addEventListener(FocusEvent.FOCUS_IN,locationCLOSE);
bar.addEventListener(MouseEvent.MOUSE_DOWN,barCLICK);
back_button.addEventListener(MouseEvent.CLICK,BACK);
next_button.addEventListener(MouseEvent.CLICK,FORWARD);
bar.width = stage.stageWidth;
bar_foot.x = stage.stageWidth-bar_foot.width;
//リサイズ処理
function Resize(event:Event){
html.width = html.contentWidth + stage.stageWidth-html.contentWidth;
html.height = html.contentHeight + stage.stageHeight-html.contentHeight-40;
bar.width = stage.stageWidth;
bar_foot.x = stage.stageWidth-bar_foot.width;
}
//アドレス表示処理
function CHANGE(event:Event){
HTMLlocation.text = html.location;
}
//読み込み完了時処理
function COMPLETE(event:Event){
html.width = html.contentWidth + stage.stageWidth-html.contentWidth;
html.height = html.contentHeight + stage.stageHeight-html.contentHeight-40;
}
//戻るキー
function BACK(event:Event){
html.historyBack();
}
//進むキー
function FORWARD(event:Event){
html.historyForward();
}
//ENTERキー用イベントリススナー登録
function locationCLOSE(event:Event){
HTMLlocation.addEventListener(KeyboardEvent.KEY_DOWN,locationKEYDOWN);
}
//ENTERキーを押してlocation移動
function locationKEYDOWN(event:KeyboardEvent){
if(event.keyCode == 13){
var newUrl:URLRequest = new URLRequest(HTMLlocation.text);
html.load(newUrl);
}
}
//ドラッグでウィンドウ移動
function barCLICK(event:MouseEvent){
stage.nativeWindow.startMove();
}