履歴とheader(“Location: —“);

LINEで送る
Pocket

最近(というか昨日)、名古屋ちょい絶発表会 vol.2があり、AIRのHTML使ってみましょー、ってなことをやってたのですが、
その後触ってて、ちょっとメモ。

mx:HTMLのid=”browsing”
とすると、

履歴を取るんだったらこんなんでしょうか?

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:WindowedApplication xmlns:mx=”http://www.adobe.com/2006/mxml”; layout=”absolute”>
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;

private function init():void
{
//履歴をtrace()で出力してみる
browsing.addEventListener(Event.LOCATION_CHANGE, function():void{
trace(browsing.location);
});
}

private function changeLoc(e:FlexEvent):void
{
browsing.location = e.target.text;
}
]]>
</mx:Script>
<mx:VBox>
<mx:HBox>
<mx:Button label=”&lt;” click=”browsing.historyBack()” />
<mx:Button label=”&gt;” click=”browsing.historyForward()” />
<mx:Button label=”reload” click=”browsing.reload()” />
<mx:TextInput id=”urls” enter=”changeLoc(event)” />
</mx:HBox>
<mx:HTML id=”browsing” width=”500″ height=”700″ />
</mx:VBox>
</mx:WindowedApplication>

で、僕の経験不足+知識不足なのでしょうけど、ブラウザに履歴を残さずに移動するには、PHPなら、
header(“Location: http://sample.com”;);

とか書いておけばいいってきいたんですけど、AIRで作れば、上の方法で履歴をとれば、headerでも履歴を残せます。
例えば、試しに。

http://www.hi-farm.net/labs/location.php

これは
<?php
header(“Location: http://www.hi-farm.net”;);
?>

ってだけ書いているファイルで、
上にかいたコードを使ってみると、

http://www.hi-farm.net/labs/location.php
http://www.hi-farm.net/

って出力されます!!

これって普通ですか?

2008年2月17日01:01

Shell.shell.idleThreshold

LINEで送る
Pocket

ちょいと間ができてしまいましたが、AIRをもう一度再勉強!!ってことでいろいろ資料をみていたんですが、こんな機能がありましたね。

flash.system.Shellクラスです。

idleThreshold:int -> これで指定した秒数、マウス操作、キーボード操作しないとEvent.USER_IDLEイベントを送出します。

ってことは!デスクトップアプリとしてはアラームやらなんか面白い事ができそうですね。
僕はちなみに、数秒間何もしなければ恥ずかしい音声を流す、というアプリを作りました。
著作権とかで問題があるので、その辺を改めて作り直したら配布しますね。

使い方は、

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:WindowedApplication xmlns:mx=”http://www.adobe.com/2006/mxml”; layout=”absolute” creationComplete=”initApp()”>
<mx:Script>
<![CDATA[

import flash.system.Shell;
import flash.events.Event;

       private function alertSet():void{
//基本設定
// タイムリミットは5秒
Shell.shell.idleThreshold = 5;
//IDLEイベントの設定(何もしなかった場合の設定)
Shell.shell.addEventListener(Event.USER_IDLE, idleHandler);
// IDLE状態を解除された時の設定
Shell.shell.addEventListener(Event.USER_PRESENT, userPresentHandler);
}
private function idleHandler(e:Event):void{
//Idle状態になった場合の挙動
}

private function userPresentHandler(e:Event):void{
//Idle状態でなんらかの操作をした場合の挙動
}
]]>
</mx:Script>
</mx:WindowedApplication>

ただ、僕の場合、idleThresholdを5にすればよかったですが、2だとエラーを吐き出しました。なんででしょう?

2007年11月8日23:37

AOLでのAIR Widget。

LINEで送る
Pocket

多分、とーっくに知っている方は多いのでしょうが、AOLで、こんなAIRアプリがありました。
AOL Music – top 100 videos BETA
http://music.aol.com/help/syndication/desktop-widgets

早速ダウンロード&インストール。
様はAOLmusicで扱っているミュージックビデオのプレーヤーなんですけど、音楽好きな僕としては、大変うらやましいです。

間違いなくFlexで作ったんだと思いますが、こういうのが作れるのって、コンテンツホルダーと仕事しないと実現って難しそうですよね?
やろうと思えば個人で、ローカルにあるビデオを再生するプレーヤーなんてのは直ぐに作れるとは思うのですが、コンテンツ量が少ないから、いまいち面白みに欠けると思うんですよ。

というか、ローカルの音楽やビデオを再生するだけなら、iTunesでいいやん!って話しになりそうだし。

そう考えると、日本ではYahooとかMTV Japanとかでしょうかね。
今回のtop 100 videosは再生させるのが主な機能な気がしますが、ネットワーク機能を使えばもっといろいろできますよね。
そんな感じのとこ相手にAIRアプリ作れたらおもしろいだろうなーなんて考えたのでした。

でも、、、、現在のAIRアプリは日本語入力があやしいからなあ。。。。

2007年10月15日01:20

AIR beta 2 での変更点。

LINEで送る
Pocket

AIRもbeta2になり、変更がありました。

主なところは、akihiro kamijoさんのブログにありますが、
http://weblogs.macromedia.com/akamijo/archives/2007/10/adobe_air_2.cfm#more

引用開始———————-

1 ByteArray.infrate()とByteArray.deflate()メソッドがなくなった。
2 ClipboardManagerクラスとTransferableDataクラスがClipboardクラスに置き換えられた。
3 DragManager.isDraggingがメソッドからプロパティに変更
4 Doorクラスが廃止。
5 Fileクラスが変更
 File.listDirectories() -> File.getDirectoryListing()
 File.listDirectoriesAsync() -> File.getDirectoryListingAsync()
 File.listRootDirectories() -> File.getRootDirectories(9
 File.relativize() -> File.getRelativePath()
 File.resolve() -> File.resolvePath()

6 NativeWindow
 visible プロパティがコンストラクタではなく属性として指定するように変更。
 Stage.window は Stage.nativeWindow に変更されました。
 NativeWindowCapabilties クラスが無くなり、代わりに NativeWindow クラスの属性として実装されました。

7 Systemのpause(), resume(), gc()メソッドがデバッグモードのみ使用可能。
 exit()はAIRでは使えなくなり、代わりに、Shell.exit()を使うようにする。

—————引用 終わり

他にもあるようで、変更点は多いですね。

で、僕の場合は、TransferableDataとFileをよく使ってたのですが、やっぱり変更に伴いつまずきました。

TransferableDataは、Clipboardクラスに入ったのですが、入ったはいいが、どうすればデータを取得できるかがわからない。
しかも、困った事に、自分が参照していた言語リファレンスのバージョンがbeta2でなかったため、いつまでたっても答えがみつからないという悲惨な状況でした。
古いバージョンを利用している人は、最新版をここからダウンロードしましょうね。
http://labs.adobe.com/wiki/index.php/AIR:Documentation#Flex_Developers

で、どうやればデータを取得できるかですが、
例えば、ドラッグしたテキストデータを取得する場合なら、

<mx:Script>
<![CDATA[
//—————drag and drop
import mx.core.*;
import flash.desktop.DragManager;
import flash.events.NativeDragEvent;
import flash.desktop.Clipboard;
import flash.desktop.ClipboardFormats;
import flash.desktop.ClipboardTransferMode;

private var clip:Clipboard;
private function acceptDragDrop():void{
data_la.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, dragEnterFromFinder);
data_la.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, dropFromFinder);
clip = new Clipboard();
}

private function dragEnterFromFinder(e:NativeDragEvent):void{
DragManager.acceptDragDrop(appBox);
}
private function dropFromFinder(e:NativeDragEvent):void{
clip = e.clipboard;
//get text
trace(clip.getData(“air:text”));
}
]]>
</mx:Script>
<mx:Label id=”data_la” />

てな感じで取得できました!
NativeDragEventのclipboardのgetData(“air:text”)で取得できる、ということです。
当然、text形式でない場合は、別途変更して下さい。

ああ、airに興味を持った宿命とは思うが、変更が多い。。。

今まで作成していたairアプリがそのままではコンパイルできないという深みにはまっています。。。。

2007年10月12日03:24

Google AnalyticsのAIRアプリ

LINEで送る
Pocket

MXNAにて、こんなアプリ見つけました。

Analytics Reporting Suite
http://www.aboutnico.be/index.php/google-analytics-air-beta-sign-up/

Google Analyticsを使える状態にある事は、当然前提です。

Ajaxで見せているGoogleの画面も結構いいな、なんて思ってましたが、グラフを切り替えたときに、滑らかなアニメーションでそのグラフの変化を見せられたりして、相当使いやすかったです。
やっぱりAIRっていうか、swfってアプリケーションとしても使い勝手の良い物を作成できるんだ、とおもったのでした。

2007年9月25日15:04

さて、先日の問題について。

LINEで送る
Pocket

昨日AIRアプリを公開してみたわけですが、
windowsにて問題がおきました。

『ドラッグアンドドロップできない』

致命的!!

この問題に立ち向かうべく、調査開始です。

まず、僕がもっているWindows環境:
Parallels: ビルド1940(2006年10月12日) ※なぜか先日勝手にバージョンダウンしていました。
Windows XP SP2 , 
がMacBook 10.4.10 , 2GHz Intel Core Duo , 2GB 667 MHz DDR2 SDRAM
とか書いてます。

そして、表示されるエラー:
『Error: Error #2037: 関数の呼び出しシーケンスが正しくないか、以前の呼び出しが失敗しています。
 at flash.net::FileReference/get name()
 at ImageViewer/::onDrop()

ImageViewer/::onDrop()ってのは、僕が書きました。

問題なのは、1つ目の『FileReference』。
実際は、import もしてないし、インスタンスも作成してません!!

ということはTransferableDataクラスは内部でFileReferenceクラスを使っているということになりますよね?

なので早速Transferable.asがあれば調べよう!と思ったのですが、ファイルが見つからない。。。

これって確認する事はできないんでしょうか?

どうしよう。。。取りあえずメーリングリストへPostでしょうか。。

2007年9月13日23:45

AIRで作ってみました。

LINEで送る
Pocket

追記:

テストしてなかったWinで見事にドロップできないという致命的な問題があるようです。
後日アップ次第blogにてお知らせします。
——————————————————-

ここ最近AIR, Flex, Actionscript 3.0にはまりっぱなしですが、本来やりたいことがちょいと引っかかっているので、気分転換代わりに作ってみました。

特徴としては、ドラッグアンドドロップで画像を登録すると、DataGridを使って各情報でソートできるというものです。

現在オフィスシェアしているかすやかずのりさん(http://www.necono.com)から「こんなんあったらいいかも」という話しを聞いて作りました。
色情報の計算は簡単で、
画像を登録するときに、RGB各値の平均値を抽出し、各色情報をはじき出しております。
bitmapData万歳!!って感じですね。

ただ、個人的には、確実に計算して色の平均値を出しているので、間違いはないはずですが、まだまだ改善の余地がありそうなので、算出方法を考えてみます。

後は、何気にバージョンが『0.1』なので、なにかあれば問題をフィードバックしていただけると泣きそうなくらいうれしいです。

さらに不安なのが、相当いい加減に書いてしまった英語版の説明文。。。
日本語と対応していないし、おかしな言い回ししまくっていると思うし。。。

あ、AIRなので、アプリのインストール前に、AIR Runtimeのインストールが必要です。
ランタイムはこちらから。
http://labs.adobe.com/downloads/air.html

僕が作ったのはこちらから。
http://www.hi-farm.net/air/imageviewer/

————————————-

作ってみて、改めてAIRってすごいな、と思いました。
Actionscript 3や、MXMLを覚えるところから始めてたのでそのあたりの習得にはちょっと時間がかかりましたが、
このアプリ自体なら、1日弱でできてしまいました。

このスピードでこれだけ組めるなら、簡単なガジェットみたいなのを作る場面には大活躍しそうですね。
楽しかったです。

————————————-
さらに追記:
Windows XPで使えないという報告を受けました。
ドラッグアンドドロップで引っかかっているようなので、Transferabledataを調べた方がいいのかな?という感じです。
調べたらアップしますね。

2007年9月12日23:41

簡単な画像変換アプリ

LINEで送る
Pocket

こんなの作ってみました。
Image Converter。

http://www.hi-farm.net/air/imageconverter/imageConverter.zip

要するに、Finderとかからドラッグアンドドロップすると、対応する形式に変換されます。

現在の要改善点:

・本来は、画像の上書きになる場合は確認するようになっているのですが、.jpg -> .jpgの場合は確認ダイアログがでません。
まあ同じファイルだから別にいいんでしょうが、ちょっと気持ち悪いです。

・外見がまるっきりコンポーネント+テキストなのであまりにもぱっとしません。明らかにいい加減になってました。
 後でやらないといけないですね。

何かあれば連絡やら書き込みなど頂けると密かに泣きながら感激しています。

ソースに関しては、思うまま書いたこともあり、今はかなり汚いので、整頓してから公開しますね。

2007年8月30日01:15