May 12, 2008

移転しますた

http://d.hatena.ne.jp/undo0530/

書くのすっかり忘れてた。移転しました。よろちくび。

December 22, 2007

ファイル操作1 テキストファイルの読み込み/書き出し

デスクトップにある「hoge.txt」を読みこんで編集して上書き保存してみる。

まず、ローカルファイルへのアクセスとか読み書きにはflash.filesystem.Fileクラスとflash.filesystem.FileStreamクラスを使うのでimportする。面倒だから

import flash.filesystem.*

でいいよね。
次に、hoge.txtへの参照を取得する。これはFileクラスの仕事。

var file:File = File.desktopDirectory.resolvePath(“hoge.txt”);

File.desktopDirectoryでデスクトップへのパス、さらにresolvePath()でhoge.txtへのパス。ディレクトリを辿っていくときはresolvePath(“air/test/hoge.txt”)みたいな感じじゃね?試してないけど

次に、実際にファイルの中身を読み込んでみる。ここからはFileStreamクラスの仕事。
まずオブジェクトを用意する。

var stream:FileStream = new FileStream();

したら、ファイルを読み込み専用でオープンする。ファイルが見つからない場合にはエラーを吐かれるのでtry{}catch{}finaly{}で囲んでおく。

try {
 stream.open(file, FileMode.READ);//読み込み専用でオープン

 var str:String = stream.readUTFBytes(stream.bytesAvailable);//stream.readUTFBytes()メソッドは、ファイルをUTF8のデータとして読み込むメソッド。
 //引数には読み込むデータの長さを指定する。stream.bytesAvailableはstream.open()メソッドによってバッファに読み込みが完了しているデータ量。
 //stream.open()だと、完全に読み込むまでは次の処理に移らないので、全部のデータ量が既にバッファに読み込まれている。

 output.text = str.replace(/\r\n/g, “\n”);//テキストボックスに表示。改行をごにょごにょしてます

} catch (error:IOError) {
 trace(error.message);//エラーが出たら表示

} finally {
 stream.close();//エラーの有無に関わらず、ファイルをクローズする。
}

これで、テキストファイルhoge.txtの内容が表示される。文字化けしてるときは保存形式を確認。UTF-8

次は書き込み。基本的には読み込みと同じ。
ステージに「上書き保存」のボタンでも作って、リスナー登録しておく。

function writeData(Evt:MouseEvent):void {

 try {//ファイルオープンでエラーが出たときのために
  stream.open(file, FileMode.WRITE);//書き込み専用でオープン
  stream.writeUTFBytes(output.text);//stream.writeUTFBytes()メソッドは、StringをUTF8のデータとして書き込むメソッド。
 } catch (error:IOError) {
  trace(error.message);//エラーが出たら表示
 } finally {
  stream.close();//エラーの有無に関わらず、ファイルをクローズする。
 }
}

ね?簡単でしょう
ディレクトリへの参照は他にも

applicationResourceDirectory:FileアプリケーションのリソースがインストールされているディレクトリapplicationStorageDirectory:Fileアプリケーション毎に割り当てられる保存用ディレクトリdesktopDirectory:FileユーザのデスクトップディレクトリdocumentsDirectory:FileユーザのドキュメントディレクトリuserDirectory:Fileユーザのホームディレクトリ

がある。また、ファイルをオープンする際に指定するタイプは、

FileMode.READ読み込み専用。FileMode.WRITE書き込み専用。ファイルは常に上書きされる。ファイルが存在しなければオープン時に作成される。FileMode.APPEND書き込み専用。データは常にファイル末尾に追記される。ファイルが存在しなければオープン時に作成される。FileMode.UPDATE読み書き両用。ファイルの任意の位置から読み書き可能。ファイルが存在しなければオープン時に作成される。

がある。

December 14, 2007

右クリックメニューを作る

右クリックで出てくるポップアップメニューを作ってみよう!

まず、メニューのアイテムを用意。

var myMenu:NativeMenu = new NativeMenu();
//メニューの大元になるメニュー。この下に「File」とか「終了」とか作る。
var fileMenu:NativeMenuItem = myMenu.addSubmenu(new NativeMenu(), “File”);
//大元メニューのしたに「File」サブメニューを作った。
var loadMenu:NativeMenuItem = new NativeMenuItem(“Load”);
var exitMenu:NativeMenuItem = new NativeMenuItem(“Exit”);
//メニューアイテム「Load」と「Exit」を作った。下には入れてない。
fileMenu.submenu.addItem(loadMenu);
myMenu.addItem(exitMenu);
//Fileの下にLoadを、myMenu直下にExitを入れた。

これで、メニューの準備ができた。次に、LoadとExitを選択したときに処理を行えるよう、リスナーに登録しておく。

loadMenu.addEventListener(Event.SELECT, loadHoge);
exitMenu.addEventListener(Event.SELECT, exitHoge);
//メニューから選択された時にリスナーが拾って、それぞれ関数を呼ぶ。

loadHoge()とかexitHoge()関数は適当に定義しといてね。
最後に、この自作メニューを右クリックで出せるようにする。

window_mc.contextMenu = rootMenu;
//window_mcインスタンスを右クリックするとメニューが出る

これでたぶんおk。右クリックすると
File→
Exit
なメニューが出て、FileからはさらにLoadアイテムが右に出るよ!

ウィンドウ操作2 ドラッグで移動

オリジナルのかっこいいウィンドウにしたらドラッグできない\(^o^)/
そんなときはコレ

stage.nativeWindow.startMove();

ウィンドウのインスタンスをリスナーに登録して、マウスが押下してる間に↑の関数を呼び出すように設定すればおk。例えば、

window_mc.addEventListener(MouseEvent.MOUSE_DOWN, windowMove);
/*window_mc上でマウスが押下されてる間、windowMove関数を実行する。*/

function windowMove(Evt:MouseEvent):void {
 stage.nativeWindow.startMove();
}

こんな感じ。

AIR ベータ3 来てた\(^o^)/

AIR Beta3 インストーラ→\(^o^)/

Flashのアップデートも来たよ→\(^o^)/
以下、うp手順。

1.AIR Beta3 インストーラをインスコ

2.\Program Files\Adobe\Adobe Flash CS3\ にある、「AIK」フォルダを削除。

3.\Program Files\Adobe\Adobe Flash CS3\First Run\Commands\ にある、「AIR - Application and Package Settings.jsfl」と「AIR - Package AIR File.jsfl」を削除。

4.\Document and Settings\Local Settings\Application Data\Adobe\Flash CS3\Configuration\Commands\ にも3.と同じファイルがあるので削除。※隠しファイルを表示しとけ

5.Flash CS3をアップデートする。ここから。言語を間違えないように。

6.AIR Beta3 UpdaterをDLしてアップデートする。ここから。言語を間違えないように。日本語はもっと下のほうにあるから。

以上だと思う。またなんかあったら追記します。

December 7, 2007

ウィンドウ操作1 最大化 最小化 元のサイズに戻す 閉じる

せっかくAIRなんだから変な形のウィンドウにしたいよね!でもカスタムクロームにすると閉じるボタンがなくなっちゃって、タスクバーから右クリしたりAltF4とかしないと終了できなくなっちゃうね(´・ω・`)

なのでスクリプトからウィンドウを閉じる命令出せればいいよね!

stage.nativeWindow.close();

これだけ。例えばボタンインスタンスbuttonを描いて、フレームアクションに

button.addEventListener(MouseEvent.CLICK, closeWindow);

function closeWindow(Event:MouseEvent):void{
 stage.nativeWindow.close();
}

って書けば、ボタンを押した時にウィンドウが閉じるよ。簡単だね!

stage.nativeWindow.maximize(); は最大化
stage.nativeWindow.minimize(); は最小化
stage.nativeWindow.restore(); は元のサイズ
stage.nativeWindow.close(); は閉じる

だよ!覚えておこう!

※AIRベータ1だとstage.window.close();だったらしいけど、ベータ2からはstage.nativeWindow.close();に変わったらしい。( ´・∀・`) ヘー

December 4, 2007

まずやること

準備するもの
・Flash CS3
・AIRインストーラ
・Flash CS3用でAIRを作れるようにするアップデート

AIRインストーラは「ARIアプリケーションをインストールして使えるようにする」ためのもの。アプリを使うだけならこれだけ落とせばOK。ここからDL
次に、Flash CS3でAIRを作れるようにするアップデート。ここからDLして実行。Flashが英語版なら英語版のアップデート、日本語版なら日本語版じゃないとダメだよ。うまくいかない時はまずFlash自体をアップデートしてみるといいかも。

次に、Flashを起動して、スタートアップスクリーン(起動時に表示されて、ファイルを開くのか新規作成するのかとか選ぶ、かなりの確率でオフにされてるアレ)の中から「Flash file (Adobe AIR)」で新規作成する。ここで毎回何か出るけどOKでOK。

で、まず.flaファイルを半角英数でいったん保存する。そしたら「コマンド」から「AIR-Application and Installer Settings」を選ぶ。開いたウィンドウの真ん中ちょい下に「Digital signature(電子署名:)」の欄があるので、そこのChange(設定)ボタンを押す。さらに開いたウィンドウの「Create…(作成…)」ボタン押す。

デジタル署名ファイルを作成。名前とか所属とかパスワードとか、全部埋めて保存する。保存する場所はどこでもいいっぽい。

以上でたぶん終了。次からはAIRパッケージを作るたびに署名のパスワードを求められる。
試しに、.flaで適当な四角とか描いて保存して、Shift+F12かCtrl+Enterでswfとxmlファイルを作って、「コマンド→AIR-Application and Installer Settings→Publish AIR File」あるいは「コマンド→AIR-Create AIR File」でAIRパッケージを作る。出来たファイルを実行すると、最初にインスコしたAIRインストーラが起動してアプリをインストールしますか?って聞いてくるので指示通りにインスコ。アプリを起動すれば、描いた四角が表示されるはず。※この四角はswfファイルを再生してるワケじゃなくて、AIRランタイムからswfを表示してる、って感じらしいよ。よくわかんねーけど