Просмотр полной версии : отлов нестандартных событий
Можно ли как-то узнать какой клип был нажат?
И чем более эффективным можно заменить onMouseMove при том, что нужно отлавливать вхождение мыши в пределы клипа с нажатой кнопкой?
Офф: кстати, события такого вида onMouseMove действительно тормознее, чем такого - onClipEvent(mouseMove), или это я торможу?
Techmaker
04.08.2003, 00:48
можно :)
1)
MovieClip.prototype.onMouseDown=function(){if(this.hitTest(_root._xmouse,_root._ymouse)){trace(this._name)}}
2)
this.onMouseDown=function(){for(mc in this){if(this[mc].hitTest(_root._xmouse,_root._ymouse)){trace(this[mc]._name)}}}
вроде ошибок недопустил когда писал.... должно работать ;) :)
Techmaker
04.08.2003, 00:51
отлавливать вхождение мыши в пределы клипа с нажатой кнопкой?
немного непонял :)
отлавливать вхождение мыши в пределы клипа с нажатой кнопкой
если я правильно понимаю - это dragOver
Офф: кстати, события такого вида onMouseMove действительно тормознее, чем такого - onClipEvent(mouseMove), или это я торможу?
а как насчёт этого?
2dee2 && Techmaker
отлавливать вхождение мыши в пределы клипа с нажатой кнопкой
если я правильно понимаю - это dragOver
Нет.
Я нажал кнопку мыши над одним клипом, не отпуская кнопки, перемещаю мышку на другими клипами. Вот мне и нужно отловить вхождение мышки в зону клипа при нажатой кнопке.
(dragOver - это нажал, ушёл за пределы, опять вошёл в пределы)
а чем тебя это не устраивает?
onClipOver = function (target) {
onEnterFrame = function() {
if (_press) {
if (target.hitTest(_root._xmouse, _root._ymouse, 1)) {
trace(target+" - over");
}
}
};
};
onMouseDown = function () {
_press = 1;
onClipOver ("твой мувик");
};
onMouseUp = function () {
_press = 0;
};
2derhab
_droptarget тебе поможет
а как его в моей ситуации присобачить?
а чем тебя это не устраивает?
onClipOver = function (target) {
onEnterFrame = function() {
if (_press) {
if (target.hitTest(_root._xmouse, _root._ymouse, 1)) {
trace(target+" - over");
}
}
};
};
onMouseDown = function () {
_press = 1;
onClipOver ("твой мувик");
};
onMouseUp = function () {
_press = 0;
};
Я уже пробовал что-то подобное. Но! при тысяче мувиков это начинает тормозить так, что мой PIII 733 (хоть и не такой уж новый, но всё же) начинает очень сильно тормозить. По Task Manager-у такой вариант отнимает 100 процентов "силы" (на время этого события). Поэтому нужно что-то качественно иное. Я подумывал о своём событии (мне нужно фиксировать только вход мыши в область клипа [c нажатой кнопкой, что уже не так сложно]). Но никак не могу такое реализовать. (может, кто что подскажет?)
Ещё была идея с onRollOver, но он почему-то отказывается срабатывать при нажатой кнопке мыши...
Оригинал написал(а) metton
2[B]
Но! при тысяче мувиков это начинает тормозить так, что мой PIII 733 (хоть и не такой уж новый, но всё же...
Ну...тысячи мувиков....тут как не крути по-моему..хотя я не знаю... :)
2derhab
Заметь, я говорю не о тысячах, а об одной тысяче. Если быть точнее, то верхний предел - 900 (при нижнем пределе в 25 всё летает даже без проверки на "нажатость" кнопки).
а если можно поконкретней...что там летает, что за мувики вообще? Может... исходник?
Конкретней некуда:
есть матрица из мувико (возьмём максимум - 900: 30*30)
Нужно, чтобы при нажатии на один из них и перетаскивания мыши над другими (не отпуская кнопки), они (в область которых зашла мышка), скажем, переходили бы на следующи кадр.
ок, щас я уже спать, а завтра попробую эту ситуацию..тем более что недавно делал что-то подобное.
Да..вопрос..при нажатии на любой из мувиков идет привязка его к курсору..то есть его надо перетаскивать, а не просто вести нажатую мышь?
2derhab
ОК. Спасибо.
Спокойной ночи.
2derhab
Да..вопрос..при нажатии на любой из мувиков идет привязка его к курсору..то есть его надо перетаскивать, а не просто вести нажатую мышь?
Что-то я ничего не понял - это вопрос, вопрос ко мне, и вообще ты сечас с кем разговариваешь? :)
Ты вообще оч ем? :rolleyes:
Оригинал написал(а) metton
Конкретней некуда:
Нужно, чтобы при нажатии на один из них и перетаскивания мыши над другими (не отпуская кнопки), они (в область которых зашла мышка), скажем, переходили бы на следующи кадр.
Вот об этом:)
Track As Menu не прокатит?
2Useless
Я пока не могу понять разницу между track as button и menu item. Какая в них качественная разница?
Track As Menu это точто тебе надо, Useless прав.
Смотри аттач.
А с какой частотой обрабатывается положение мышки? В смысле ее координаты! Я к чему...когда быстро мышкой двигаешь иногда в менюхах "залипают" кнопки и приходится делать проверку или как в этом примере зелененькая линия прерывается!
ну в этом случае событие onDragOver...хрен знает с какой частотой...fps видимо...рвется линия если очень быстро водить
2derhab
Вот - супер! То что надо! Теперь, хоть ещё и грузит проц, но работает быстро :D
Спасибо!
Но всё же хотелось бы разобраться с этим trackAsMenu
Вот, как я понимаю, ключевая фраза (из help-а):
a Boolean property that indicates whether or not other buttons or movie clips can receive mouse release events
Смысл понял, но не понял на что влияют mouse release events.
То есть если клипы/кнопки не получают этих mouse release events, то... что?
Если батон или мувик запрограммен как trackAsMenu, то при отжатии мыши(при том что она была наведена на него в нажатом, как у тебя состоянии) срабатывает событие onRelease, иначе нет.
сделай мувик "button" состоящий из 2 кадров разного цвета и в руте напиши это:
button.trackAsMenu = true;
button.onRelease = function() {
this.nextFrame();
};
потести
а потом попробуй закомментить - button.trackAsMenu = true;
и снова потести:)
Офф: кстати, события такого вида onMouseMove действительно тормознее, чем такого - onClipEvent(mouseMove), или это я торможу?
А это?
не знаю..не проверял, помоему ты тормозишь:)
Кто-нибудь знает наверняка?
Потому что когда я менял эти два варианта, при onMouseDown и др. имхо подтормаживало побольше...
чего ты вообще хочешь добиться....это вопрос.
2derhab
Я хочу узнать точно не полагаясь на догадки...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.