2016-07-14 4 views
0

Как можно передавать события между mousedown и mouseup конкретно? В моем событии mousedown я создаю круг и добавляю его в DOM, в моей мыши я хочу оживить круг. Я надеялся сделать это, ссылаясь на узел без прикрепления идентификатора, если это возможно.Передача данных между событиями мыши

Вот отрывок из моего кода:

// Mouse down 
hitArea.addEventListener('mousedown', function(e) { 
    var el = new createCircle(); 

    mask.appendChild(el); 

    TweenMax.set(el, { 
    transformOrigin: '50% 50%', 
    x: e.clientX - hitDimensions.left, 
    y: e.clientY - hitDimensions.top 
    }); 
}); 

// Mouse up 
hitArea.addEventListener('mouseup', function(e) { 

    // Reference to el needed 
    animateCircle(el, e); 

}); 

Вы можете просмотреть мой Незавершенный код здесь: http://codepen.io/getreworked/pen/VjzyLL

ответ

1

Вы можете просто использовать затворы:

var el; 
hitArea.addEventListener('mousedown', function(e) { 
    el = new createCircle(); 

    mask.appendChild(el); 

    TweenMax.set(el, { 
    transformOrigin: '50% 50%', 
    x: e.clientX - hitDimensions.left, 
    y: e.clientY - hitDimensions.top 
    }); 
}); 

// Mouse up 
hitArea.addEventListener('mouseup', function(e) { 

    if(el) 
    animateCircle(el, e); 

}); 
+0

К сожалению, не так легко, потому что каждый клик создает новый круг, ссылка будет перезаписана. Я мог бы создать массив и каждый раз нажимать новый элемент массива, но потом мне нужно отслеживать элементы массива, чтобы добавлять/удалять их по мере продвижения. Я надеялся на более простое решение. –

+0

Это, вероятно, не проблема, потому что 'mousedown' и' mouseup' являются пара-событиями. Если я ошибаюсь, вы можете объяснить, какие побочные эффекты это может вызвать? Постскриптум кажется, что он отлично работает на вашем кодексе –

+0

Проблема с этим подходом заключается в том, что он теряет ссылку. Поэтому при удалении элемента из DOM он будет ссылаться только на текущий элемент. Вы заметите, что элементы будут удалены из группы #mask в SVG, один круг всегда останется в группе. Он должен быть пустым. Как ни странно, все остальные новые элементы удаляются, хотя я ожидал, что только текущий будет удален –

Смежные вопросы