- Date:2010/1/7
- Category:AS3.0
- Author: wonder
あけましておめでとうございます!
ここのところ、仕事上でFlashを使う機会が増えてきてますので、いよいよAS3.0を勉強しようかと思っています。とりあえず、基本的な事を本で学んだのであとはwonderflを活用しながらいろいろ作ってみようと思います。
新年なので、ちょっとぱーっとしたものを。
イベントリスナー
AS3.0からは全てイベントリスナーになっています。
オブジェクト.addEventListener(イベント, 実行関数);
という形で記述します。
実行関数の引数にはイベントオブジェクトが入るので、
function hoge(e:Event) {
//実行するコードを書きます。
}
となります。
AS3.0では、イベントオブジェクトの型を省略できません。(コンパイルエラー)
イベントオブジェクトの型は使用するイベントによって変わります。
(イベントが属しているクラスによる?)
Event.ENTER_FRAME → e:Event MouseEvent.CLICK → e:MouseEvent
のように。
マウスイベント(クリック、オーバー、ムーブ)なんかは、MouseEventクラスになります。
エンターフレームイベントはEventクラスです。
今回使用した箇所でいくと、
stage.addEventListener(Event.ENTER_FRAME, make_ball);
private function make_ball(e:Event):void {
var ball:Ball = new Ball();
ball.x = stage.mouseX;
ball.y = stage.mouseY;
ball.init();
ball.move();
addChild( ball );
}
です。
また、イベントを使用する際はイベントクラスをインポートする必要があります。
import flash.events.Event; import flash.events.MouseEvent;
イベントリスナーはjavascriptでも使っていたので、そんなに違和感なく使用できました。
ステージにイベントを設置する
上記にも書いてありますが、ステージ上をクリックしたり、オーバーさせるときは
stageにイベントリスナーを設置するようです。
stage.addEventListener(Event.ENTER_FRAME, make_ball);
stage部分を省略するとダメですね。
このへんの仕組みをもうちょっと勉強しないといけないです。
オブジェクトの配置
AS3.0でオブジェクトをステージ及び指定のMovieClipに配置するときは、addChildを使います。
親オブジェクト.addChild( 子オブジェクト );
使い方としては、このような感じです。
var ball:Ball = new Ball(); // オブジェクトを作成 addChild( ball ); // オブジェクトを配置
Ballオブジェクトを作成して、それをステージに配置する流れです。
作成だけでは反映されないんですね。
ちなみに削除するときは、removeChildを使います。
親オブジェクト.removeChild( 子オブジェクト );
こんな感じで使用します。
var ball:Ball = new Ball(); // オブジェクトを作成 addChild( ball ); // オブジェクトを配置 removeChild( ball ); // オブジェクトを削除
自分自身を削除する
上記のように、外からオブジェクトを削除する時は親オブジェクト、子オブジェクトが分かりやすいですよね。
ただ、自分自身を削除したい場合はちょっと苦労します。
上記のように、親オブジェクトや子オブジェクトがわかりづらいんです。
基本的には
親オブジェクト.removeChild( 子オブジェクト );
この様式にのっとって書きますので、親オブジェクトと子オブジェクトが参照できればいいわけです。
まず、削除する子オブジェクトですが、これは自分自身なのでthisですね。
親オブジェクト.removeChild( this );
となります。
そして親オブジェクトの方ですが、自分自身の親オブジェクトの参照にはparentを使います。
parent.removeChild( this );
これでいけそうですが、parentのままではダメなようです。(※自分も理由がわからないので調べます・・)
一旦、オブジェクトに変換すると出来ます。
var parentObj:Object = Object( parent ); parentObj.removeChild( this );
と、これで無事削除完了です。
まとめ
たったこれだけのAS3.0を書くだけでも、いろんな事を学ぶことができました。
そもそも思い立ってこれを作ってみただけなんですが、
なんにせよ作るって言うことがどれほど重要かというのを実感しました。
やっぱり、何事も作らないとだめですね・・。
今年はちょっとしたものでも作って作って勉強しようと思います。
- Name
- Comment
