2

最初のタッチ後に touchevent を削除しようとしています。
次のコードを試しましたが、うまくいきませんでした:

ourCanvas.addEventListener("touchstart", function(){
    evt.preventDefault();
    startGame();
    ourGameCanvas.removeEventListener("touchstart");
}, false);`
4

2 に答える 2

3

You need to pass a reference to the original function to removeEventListener:

ourCanvas.addEventListener("touchstart", function funcref(evt) {
    evt.preventDefault();
    startGame();
    ourCanvas.removeEventListener("touchstart", funcref, false);
}, false);

In the previous code, I turned the anonymous function expression in a named function expression (funcref) so that it can be used later within the function.

And I renamed ourGameCanvas to ourCanvas. An event listener can only be removed if the element, event name, function reference and useCapture flag are identical to the ones used by addEventListener.

于 2012-12-02T13:13:04.067 に答える
1

メソッドは、removeEventListenerメソッドと同じ引数を期待していaddEventListenerます...つまり:

document.body.addEventListener('touchstart',function touchStartHandler(e)
{//use named function
    document.body.removeEventListener('touchstart',touchStartHandler, flase);
},false);

attachEventandについてdetachEventも同様です (IE < 9 をサポートするようにコーディングしている場合)

于 2012-12-02T13:13:47.483 に答える