PDA

Просмотр полной версии : отлов нестандартных событий


metton
04.08.2003, 00:39
Можно ли как-то узнать какой клип был нажат?

И чем более эффективным можно заменить 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
отлавливать вхождение мыши в пределы клипа с нажатой кнопкой?
немного непонял :)

dee2
04.08.2003, 11:05
отлавливать вхождение мыши в пределы клипа с нажатой кнопкой

если я правильно понимаю - это dragOver

metton
04.08.2003, 17:02
Офф: кстати, события такого вида onMouseMove действительно тормознее, чем такого - onClipEvent(mouseMove), или это я торможу?
а как насчёт этого?


2dee2 && Techmaker
отлавливать вхождение мыши в пределы клипа с нажатой кнопкой
если я правильно понимаю - это dragOver
Нет.
Я нажал кнопку мыши над одним клипом, не отпуская кнопки, перемещаю мышку на другими клипами. Вот мне и нужно отловить вхождение мышки в зону клипа при нажатой кнопке.
(dragOver - это нажал, ушёл за пределы, опять вошёл в пределы)

derhab
04.08.2003, 18:12
_droptarget тебе поможет

derhab
04.08.2003, 18:58
а чем тебя это не устраивает?


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;
};

metton
05.08.2003, 01:23
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, но он почему-то отказывается срабатывать при нажатой кнопке мыши...

derhab
05.08.2003, 01:28
Оригинал написал(а) metton
2[B]

Но! при тысяче мувиков это начинает тормозить так, что мой PIII 733 (хоть и не такой уж новый, но всё же...

Ну...тысячи мувиков....тут как не крути по-моему..хотя я не знаю... :)

metton
05.08.2003, 01:37
2derhab
Заметь, я говорю не о тысячах, а об одной тысяче. Если быть точнее, то верхний предел - 900 (при нижнем пределе в 25 всё летает даже без проверки на "нажатость" кнопки).

derhab
05.08.2003, 01:39
а если можно поконкретней...что там летает, что за мувики вообще? Может... исходник?

metton
05.08.2003, 01:56
Конкретней некуда:
есть матрица из мувико (возьмём максимум - 900: 30*30)
Нужно, чтобы при нажатии на один из них и перетаскивания мыши над другими (не отпуская кнопки), они (в область которых зашла мышка), скажем, переходили бы на следующи кадр.

derhab
05.08.2003, 02:01
ок, щас я уже спать, а завтра попробую эту ситуацию..тем более что недавно делал что-то подобное.

Да..вопрос..при нажатии на любой из мувиков идет привязка его к курсору..то есть его надо перетаскивать, а не просто вести нажатую мышь?

metton
05.08.2003, 02:05
2derhab
ОК. Спасибо.
Спокойной ночи.

metton
05.08.2003, 02:12
2derhab
Да..вопрос..при нажатии на любой из мувиков идет привязка его к курсору..то есть его надо перетаскивать, а не просто вести нажатую мышь?
Что-то я ничего не понял - это вопрос, вопрос ко мне, и вообще ты сечас с кем разговариваешь? :)
Ты вообще оч ем? :rolleyes:

derhab
05.08.2003, 02:15
Оригинал написал(а) metton
Конкретней некуда:
Нужно, чтобы при нажатии на один из них и перетаскивания мыши над другими (не отпуская кнопки), они (в область которых зашла мышка), скажем, переходили бы на следующи кадр.

Вот об этом:)

Useless
05.08.2003, 02:28
Track As Menu не прокатит?

metton
05.08.2003, 02:48
2Useless
Я пока не могу понять разницу между track as button и menu item. Какая в них качественная разница?

derhab
05.08.2003, 12:32
Track As Menu это точто тебе надо, Useless прав.
Смотри аттач.

ЛОWАДКА
05.08.2003, 14:29
А с какой частотой обрабатывается положение мышки? В смысле ее координаты! Я к чему...когда быстро мышкой двигаешь иногда в менюхах "залипают" кнопки и приходится делать проверку или как в этом примере зелененькая линия прерывается!

derhab
05.08.2003, 14:44
ну в этом случае событие onDragOver...хрен знает с какой частотой...fps видимо...рвется линия если очень быстро водить

metton
05.08.2003, 18:14
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, то... что?

derhab
05.08.2003, 18:44
Если батон или мувик запрограммен как trackAsMenu, то при отжатии мыши(при том что она была наведена на него в нажатом, как у тебя состоянии) срабатывает событие onRelease, иначе нет.

derhab
05.08.2003, 18:52
сделай мувик "button" состоящий из 2 кадров разного цвета и в руте напиши это:

button.trackAsMenu = true;
button.onRelease = function() {
this.nextFrame();
};
потести

а потом попробуй закомментить - button.trackAsMenu = true;
и снова потести:)

metton
06.08.2003, 02:50
Офф: кстати, события такого вида onMouseMove действительно тормознее, чем такого - onClipEvent(mouseMove), или это я торможу?
А это?

metton
09.08.2003, 15:30
ась? :rolleyes:

derhab
09.08.2003, 16:09
не знаю..не проверял, помоему ты тормозишь:)

metton
09.08.2003, 23:47
Кто-нибудь знает наверняка?
Потому что когда я менял эти два варианта, при onMouseDown и др. имхо подтормаживало побольше...

derhab
10.08.2003, 03:44
чего ты вообще хочешь добиться....это вопрос.

metton
10.08.2003, 12:42
2derhab
Я хочу узнать точно не полагаясь на догадки...