LoadBarEventクラスをflash.events.Eventクラスの子供にしておくと、dispatchEvent()にnewで引数として渡せる。
Eventクラスは、コンストラクタでtypeを引数としてとるようになっているので、eventクラスを継承したLoadBarEventクラスのコンストラクタ定義でsuperにtypeを引き渡せばよい。
LoadBarEventクラスはこうなる。
package classes.events{ import flash.events.*; public class LoadBarEvent extends Event{ public static var LOADCOMPLETE:String="loadComplete"; public function LoadBarEvent(type:String){ super(type); } } }
LoadBarクラスの呼び出し部分。
this.dispatchEvent(new Event(LoadBarEvent.LOADCOMPLETE));
の部分は、
this.dispatchEvent(new LoadBarEvent(LoadBarEvent.LOADCOMPLETE));
となる。
すっきりするどころか長くなっている。
flash.events.Eventクラスには定数もかなり準備されてるので、Eventクラスをそのまま使いまわした方が良いのかも知れない。
this.dispatchEvent(new Event(Event.COMPLETE));
となる。余計な定数を定義する必要も無く、一番すっきりする。
ちなみに、このときのリスナーハンドラで参照できる、イベントオブジェクトのtargetには、自動的にLoadBarのインスタンスが設定される。便利!
traceすると[object LoadBar]と出力される。
これは、インスタンスを格納した変数loadbarと比較するとtrueになる。
クラスLoadBarとは一致しない。falseになる。
文字列"LoadBar"とも一致しない。falseになる。
文字列"LoadBar"と一致させるには、LoadBarクラスでtoStringをoverrideすればよい。
public override function toString():String{ return "LoadBar"; }
という感じ。LoadBarクラスはMovieClipを継承しているので、もともtoStrig()が定義されている。AS3.0の場合、オーバーライドする場合overrideと明示しないとエラーになるので注意。
オーバーライドしないもともとのtoString()は[object LoadBar]という形式でクラス名の文字列を出力してくれるようになっているらしい。
event.target=="[object LoadBar]"とするとtrueになる。
event.target.toString()=="[object LoadBar]"の場合ももちろんtrueになる。
Eventクラスの定数。
(http://livedocs.macromedia.com/flex/2/langref/index.htmlによる)
ACTIVATE : String = "activate"
ADDED : String = "added"
CANCEL : String = "cancel"
CHANGE : String = "change"
CLOSE : String = "close"
COMPLETE : String = "complete"
CONNECT : String = "connect"
DEACTIVATE : String = "deactivate"
ENTER_FRAME : String = "enterFrame"
ID3 : String = "id3"
INIT : String = "init"
MOUSE_LEAVE : String = "mouseLeave"
OPEN : String = "open"
REMOVED : String = "removed"
RENDER : String = "render"
RESIZE : String = "resize"
SCROLL : String = "scroll"
SELECT : String = "select"
SOUND_COMPLETE : String = "soundComplete"
TAB_CHILDREN_CHANGE : String = "tabChildrenChange"
TAB_ENABLED_CHANGE : String = "tabEnabledChange"
TAB_INDEX_CHANGE : String = "tabIndexChange"
UNLOAD : String = "unload"