• 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

To pagetop


wonder_boys

wonder
Webデザイナー兼マークアップエンジニア。 静岡県浜松市在住。

RSS Entries

RSS Comments

Sponsored

Entries

Archive

Categories

Tags

まとめ アクセシビリティ イベント イベントリスナー オブジェクト オライリー バグ マイクロフォーマット マークアップ ユーザビリティ レビュー 引数 携帯サイト 正規表現 画像 目標 管理画面 背景 設定 alt AS3.0 Bitmap canvas content css DataGrid dreamweaver Flex form HTML html5 IK iphone javascript meta middle PHP png SGML SVG table wordpress XHTML XML

Links

킹ēǂ݂uOp[c