2009年11月3日火曜日

Action Script 3.0 初心者勉強会

に行ってきました。
その時のメモを残します。

1.インストール


とりあえずflash developのインストール。
何か起こられる場合は.Net Frameworksのバージョン2.0以上をインストール。
それでも駄目なときはjavaのランタイムをインストール。

無事にflash developのインストールができたら、flex SDKをインストール。
インストールと言ってもダウンロードファイルを展開して適切なフォルダにおいてあげればよし。

2.開発まで


①flash developを開く。

②新しいプロジェクトを作る
Project -> New Project -> AS3 Project
その際、Create directoryにチェックを入れるとよし。

③Flex SDKへの関連付けを設定する。
Tools -> Program Settings AS3Context -> Flex SDK Locationにflexの展開フォルダを指定

④動かしてみる。
再生ボタン( > ←こんなの)をクリック -> 白い画面が出てくる

④画面サイズを変えてみる
Project -> Propaties -> サイズを300x300に

3.開発してみよう


プロジェクトを新しく生成するとある程度ソースが出来上がるので、それを少々修正しながら作成。

①画面に文字を出す。
以下の例だと、画面上に'init'と表示されます。

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
this.init_status_field();
}
private var status_field:TextField = new TextField;
private function init_status_field():void
{
this.status_field.text = 'init';
addChild(this.status_field);
}

②フォーマットを変える。
先ほどのコードに以下のコードを追加すると、文字のフォーマットを変更できます。下の例だと文字の大きさを変えています。

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
this.init_status_field();
this.init_status_format();
}
private function init_status_format():void
{
var format:TextFormat = new TextFormat;

format.size = 18;
this.status_field.defaultTextFormat = format;
// this.status_field.setTextFormat( format );
}

③クリックに対応する。
いよいよ双方向のアクションの取り入れに。addEventListenerというメソッドによりアクションがあった時の行動を指定することができます。
下の例だとマウスアクションがあった時の動作を指定しています。
具体的にはマウスクリックすると、文字が'CLICKED'に置き換わります。

private function init_status_field():void
{
this.status_field.text = 'init';
this.status_field.addEventListener( MouseEvent.CLICK, status_clicked );
addChild(this.status_field);
}
private function status_clicked( e:MouseEvent ):void
{
this.status( 'CLICKED' );
}
private function status( str:String ):void
{
setChildIndex(this.status_field, numChildren -1);
this.status_field.text = str;
}

④画像を表示する。
画像も一つのクラスとして定義し、定義した画像クラスのオブジェクトを貼り付けてあげれば画像も表示させることができる。
ちょっと特殊な書き方をしますが、下のように書いてあげると大丈夫。

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
this.init_status_field();
this.init_status_format();
this.init_bitmap();
}
[Embed(source = "../sample.gif")] private static const SAMPLE:Class;
private function init_bitmap():void
{
var bitmap:Bitmap = new SAMPLE as Bitmap;
addChild(bitmap);
bitmap.x = 100;
bitmap.y = 100;
}


2時間弱の勉強会だったのでここまでしかいかなかったのが残念。
もっと動きをつけれるようなところまで行きたかったけど2時間だとここまでが限界かもね。
でも一人でやってたらすごく時間がかかったであろう設定をすぐに完了できたのは勉強会に参加したからだと思う。その意味でも参加した価値は十分。

あと、やっててすごく便利だと思ったのが、ソースを書いていくにつれ必要なパッケージが自動的にインポートされていくってこと。
すごく便利よ。