Life, Education, Death

プログラミング以外でも思ったことをつらつらと書きたい

AS3を使ってみる

またまた備忘録。

ローカルファイルが扱いたい。

http://cocoasaurus.com/blog/2009/09/air-5.htmlによると、

Fileオブジェクトを使用すると、ファイルの情報取得やコピーなどができるようになります。
更にFileStreamクラスと組み合わせるとファイルの読み書きができるようになります。

ということ。
OS依存のコードにならないように、最初からいつかのパスが通っているのでそれをベースにしてファイルを開くといいようだ。

細かい文法について

ちょっと変わっているなぁと思うのが、変数名の後ろに:で型を書くこと。
初期化と同時に宣言をするなら、型は自明だから書かなくてもいいのではないかなぁと思うのだが・・・
C++で言うauto*1とかあればいいのにな。

参考になったサイト

プロパティの使い方

メンバ変数はやっぱり、privateにしたいけど、代入文とかで値を設定したいときに便利なのがプロパティ。
この辺はC#と同じ。

第21回 プロパティのようにアクセスするメソッド - get/setアクセサメソッド:ActionScript 3.0で始めるオブジェクト指向スクリプティング|gihyo.jp … 技術評論社より

private var プロパティ:データ型;
public function get アクセサメソッド():データ型 {
return プロパティ;
}
public function set アクセサメソッド(引数:データ型):void {
プロパティ = 引数;
}

こんな感じ。最初はメンバも定義して、getter、setterも定義するのに抵抗がある人もいるかもしれないけど、この恩恵はあとあと効いてくる。

文字列の幅が図りたい

文字列の幅はフォントとかによるので、描画後に取得するのがいいと思う。
ちょっと描画せずにやる方法はわからなかったけど、

var textField:TextField = new TextField();
textField.autoSize = TextFieldAutoSize.CENTER;
textField.text = "ほげほげ";

trace( textField.width, textField.height );

こんな感じのコードで幅と高さが取れる。

フォントの種類とか色々設定したいときはTextFormatクラスをテキストフィールドに設定する。
そのときに注意点があって、TextFieldのtextプロパティを設定する前にdefaultTextFormatプロパティを設定する必要があるようです。

http://www.pandama.net/memo/2009/10/as3textformat.phpに詳しく載っている。

ウィンドウのサイズが知りたい

Flex備忘録:ActionScript3でウインドウサイズ取得 - プロキオンのはてな
より

ウインドウの幅 : stage.stageHeight;
ウインドウの高さ : stage.stageWidth;

で取れるようだ。Mainクラスのwidth、heightだと現在含まれているコンポーネントによって拡張されたサイズが入ってるみたいで、ウィンドウの大きさとはならなかった。

*1:C++0xのauto