1. Qiita
  2. 投稿
  3. enchant.js

enchant.jsでのイベントの追加・削除について

  • 7
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

サンプル

enchant.jsでのイベントの追加・削除について - jsdo.it

独自イベントを作成、発行

Eventオブジェクトを作成してDispatchEventを実行

//タッチイベントリスナを登録
sprite.ontouchstart = function(){
    //hitイベントを発行
    var e = new enchant.Event("hit");
    this.dispatchEvent(e);
};

//hitイベントリスナを登録
sprite.onhit = function(){
  alert("HIT"); 
};

イベントの削除

一度しかイベントを実行したくない場合は removeEventListener()でイベントの削除を使う。
引数にはイベント名と登録した関数を渡す。

var touchFunc = function(){
  alert("タッチ");
  //イベントの削除
  this.removeEventListener("touchstart", touchFunc);
};

object.addEventListener("touchstart", touchFunc);

登録した全てのイベントの削除

addEventListenerで登録したイベントを削除したい場合はclearEventListener()を使う。

sprite.addEventListener("enterframe", function(){
    this.moveBy(1, 1);
});
sprite.addEventListener("enterframe", function(){
    this.rotate(10);
});

//イベントをまとめて削除
sprite.ontouchstart = function(){
    this.clearEventListener("enterframe");
};

イベントに登録した無名関数を削除

arguments.calleeで実行中の関数への参照を返す。
removeEventListenerにargument.calleeを渡すことで無名関数でもイベントを削除できる。

sprite.addEventListener("touchstart", function(){
  alert("タッチ");
  //実行中の関数(無名関数)を削除
  this.removeEventListener("touchstart", arguments.callee);
});

参考サイト

enchant.js 開発のレシピ