Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   отлов нестандартных событий (http://www.flasher.ru/forum/showthread.php?t=47593)

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
[b]2

Но! при тысяче мувиков это начинает тормозить так, что мой 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

Вложений: 1
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
Я хочу узнать точно не полагаясь на догадки...


Часовой пояс GMT +4, время: 19:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.