2013-06-17 4 views
1

Я работаю над перетаскиванием DIV и у меня есть следующий код:Dart перетащить & падение ДИВА

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

+2

Я не совсем понимаю, что вы пытаетесь сделать здесь. Если вы хотите перетащить div, вы можете использовать эту библиотеку [HTML5 Drag and Drop] (http://edu.makery.ch/projects/dart-html5-drag-and-drop/). –

+0

Я не понимаю, почему код «document.on.mouseMove.remove ((событие MouseEvent) => runMoveEvent (событие)); не работает и не удаляет функцию runMoveEvent из события перемещения мыши мыши. – OZKA

ответ

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) { ... } 

Что вы делаете в своем коде, это добавление одной анонимной функции и удаление другой анонимной функции. Я думаю, что http://dartbug.com/144 (с меткой WontFix), вероятно, предоставляет более подробную информацию о том, почему это не работает.

+1

Спасибо, он работает (сохраните функцию в переменной)! – OZKA