ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

イベントの発生

イベントを発生させるためにはdispatchEvent()を使う。
引数にはイベントオブジェクトを指定する。
たとえば、COMPLETEイベントを発生させたいときは次のような感じ。

dispatchEvent(new Event(Event.COMPLETE));

http://livedocs.adobe.com/flex/3_jp/langref/flash/events/EventDispatcher.html#dispatchEvent()
実際に試してみたコード。eventtestオブジェクトを作成し、そのオブジェクト内でフレーム数を数え120を超えたらCOMPLETEイベントを発生。それを呼び出した側で受けて画面に円を描画するというもの。

イベントを発生させるテスト - wonderfl build flash online

package {
    import flash.display.*;
    import flash.events.*;

    [SWF(width="465", height="465", backgroundColor="0x0", frameRate="60")]

    public class test extends Sprite {
        private var eventtest:EventTest = new EventTest();
        public function test() {
            eventtest.addEventListener(Event.COMPLETE, complete);
            eventtest.start();
        }
        public function complete(e:Event):void {
            graphics.beginFill(0xffffff);
            graphics.drawCircle(232,232,100);
            graphics.endFill();
        }
    }
}

import flash.display.Sprite;
import flash.events.Event;

class EventTest extends Sprite {
    private var count:int = 0;
    public function EventTest() {
    }
    public function start():void {
        addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    public function onEnterFrame(e:Event):void {
        count++;
        if(count > 120) {
            dispatchEvent(new Event(Event.COMPLETE)); // イベントの発生
            removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
    }
}