PDA

Просмотр полной версии : остановка Drag-and-Drop


zelik
22.07.2009, 16:20
Добрый день!

Проблема в следующей. В руте расположены несколько мувиков.
В одном реализован Drag-and-Drop следующим образом:

function myDragger(mc:MovieClip) {
mc.onPress = function() {
this.startDrag(false);

mc.onMouseMove = function() {

updateAfterEvent();
};
};
mc.onMouseUp = function() {
if (((mc._x>=233) and (mc._x<=308)) and ((mc._y>=-25) and (mc._y<=57))) {
{
//действие над объектом

};
} else {
//возврат на место
mc._x = mc.start_x;
mc._y = mc.start_y;
stopDrag();
}
delete mc.onMouseMove;

};
}


в другом мувике реализовано что-то типа увеличительного стекла. Т.е. в нем есть только startDrag(lupa) и нет stopDrag() по отпусканию кнопки мышки (как в вышеприведенном коде).
По какой-то причине событие onMouseUp 1-го ролика цепляется 2-м..

Уважаемые, подскажите, пожалуйста, в чем ошибка и как ее исправить.

Спасибо!

dimarik
22.07.2009, 18:34
В AVM1 все MovieClip, в отличие, например, от Button, изначально добавлены как слушатели событий мыши: onMouseDown, onMouseUp, onMouseMove.
Отписать их от этого не получится. Mouse.removeListener(mc1); просто не сработает. Поэтому Вам остается проверять координаты мыши. Если мышь действительно находится над mc, то производить какие-либо действия.


mc1.onMouseDown = function() {
if (this.hitTest(_root._xmouse, _root._ymouse)) trace(this);
};

mc2.onMouseMove = function() {
if (this.hitTest(_root._xmouse, _root._ymouse)) trace(this);
};

btn1.onMouseMove = function() {
trace(this);
};

Mouse.addListener(btn1);
Mouse.removeListener(mc2); // не работает

zelik
22.07.2009, 19:05
Спасибо!