- 2008-08-04 (月)
- Action Script 3.0
AS3では欠かせない機能になってくるのかな?
いまいちよく理解できない「カスタムイベント」。
避けて通ることはできないだろうと、覚悟を決めてサンプルを作ってみた。
サンプル
このサイトをご覧頂くには最新の Flash Player Plug-in をお使いのブラウザにインストールする必要があります。
Flash Player Plug-in はこちらからダウンロードする事が出来ます(無料)。
Flash Player Plug-in はこちらからダウンロードする事が出来ます(無料)。
まぁ、これだけじゃさっぱり見えてこないと思うのでソースを下記に。
Main.as
package {
//クラス読み込み
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.events.Event;
import CustomEvent;
public class Main extends Sprite {
private var CE:CustomEvent;
private var TXT:TextField;
//コンストラクタ
public function Main() {
//ステージサイズ設定
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
//カスタムイベントクラス生成
CE = new CustomEvent(stage);
//カスタムイベントのリスナー生成
CE.addEventListener(CustomEvent.CUSTOM_EVENT, onCustomEvent);
//確認用テキストフィールド作成
TXT = new TextField();
with (TXT) {
x = 60;
y = 20;
autoSize = TextFieldAutoSize.LEFT;
text = "結果表示";
mouseEnabled = false; //マウスイベントを受け取らなくする
}
addChild(TXT);
}
//カスタムイベント
function onCustomEvent(e:Event) {
TXT.text="カスタムイベント発生";
}
}
}
これがメインのソース。
import CustomEvent;
:
:
//カスタムイベントクラス生成
CE = new CustomEvent(stage);
//カスタムイベントのリスナー生成
CE.addEventListener(CustomEvent.CUSTOM_EVENT, onCustomEvent);
まずは「CustomEvent」というクラスを用意。クラスを生成してイベントリスナーを設定する。ちなみに「CustomEvent」クラスにてオブジェクトを生成したいので、stage を引き渡しておく。
CustomEvent.as
package {
//クラス読み込み
import flash.display.Stage;
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class CustomEvent extends EventDispatcher {
//カスタムイベント名
public static const CUSTOM_EVENT:String = "custom_event";
//スプライト
var SP:Sprite;
//コンストラクタ
function CustomEvent(ST:Stage) {
//スプライト生成
SP = new Sprite();
with (SP) {
x = 30;
y = 30;
graphics.beginFill(0xFF9900);
graphics.drawCircle(0, 0, 20);
graphics.endFill();
buttonMode = true; //スプライトをボタンとして動作させる
addEventListener(MouseEvent.CLICK, btnClick);
}
ST.addChild(SP);
}
//クリック処理
function btnClick(e:MouseEvent):void {
btnClickCustomEvent();
}
//カスタムイベントの送信
function btnClickCustomEvent():void {
trace("カスタムイベントの送信")
dispatchEvent(new Event(CUSTOM_EVENT));
}
}
}
こちらがカスタムイベント用のクラス。
public class CustomEvent extends EventDispatcher {
カスタムイベントのクラスは、「EventDispatcher」を継承する必要がある。
//カスタムイベント名
public static const CUSTOM_EVENT:String = "custom_event";
:
:
//カスタムイベントの送信
function btnClickCustomEvent():void {
dispatchEvent(new Event(CUSTOM_EVENT));
}
あとは、カスタムイベント名を設定し、イベント発生のメソッドを用意。dispatchEvent() メソッドでカスタムイベント名を指定すればOK。Main.as で設定した「CUSTOM_EVENT」リスナーが実行される。
ふーむ。難しい…。
何となくもっとスマートが書き方があるような気がしてならない…orz
- 次の記事: FIVe3D + Tweener で簡単3Dモーション
- 前の記事: 配列処理 forEach() メソッドのメモ書き
コメント:0
トラックバック:0
- この記事のトラックバックURL
- http://god.xsrv.jp/__mt/mt-tb.cgi/1318
- トラックバックを受ける記事
- カスタムイベントのサンプルを作ってみた from 1ka2ka.com