1

私はドラッグアンドドロップdivに取り組んでおり、次のコードがあります:

 void init() {


    ...
    baseWindowTitleDiv.on.mouseDown.add((MouseEvent event) => saveWindowXY(event));
    baseWindowTitleDiv.on.mouseUp.add((MouseEvent event) => stopMoveEvent(event));
    ...        
  }
  void saveWindowXY(MouseEvent event) {
    ...

    document.on.mouseMove.add((MouseEvent event) => runMoveEvent(event));

  }

  void stopMoveEvent(MouseEvent event) {
    print('stopMoveEvent call');    
    document.on.mouseMove.remove((MouseEvent event) => runMoveEvent(event));//does not work!    
  }

  void runMoveEvent(MouseEvent event) {
    ...
  }

document.on.mouseMove からリスナーを削除する方法がわかりません

完全なコードはこちら - https://gist.github.com/OZKA/5795352

4

1 に答える 1

2

私の知る限り、追加したイベントへのハンドルが必要であり、それを使用して後で削除する必要があります。次に例を示します。

var myEvent = (MouseEvent event) => runMoveEvent(event); // store the function in a variable.

void init() {
  document.on.mouseMove.add(myEvent); // refer to the function by name
}


void stopMoveEvent(MouseEvent event) {
  document.on.mouseMove.remove(myEvent); // remove the same function.
}

void runMoveEvent(event) { ... }

コードで行っていることは、匿名関数を 1 つ追加し、別の匿名関数を削除することです。http://dartbug.com/144 (WontFix のタグが付けられています) は、おそらくこれが機能しない理由の詳細を提供していると思います。

于 2013-06-17T10:12:06.000 に答える