![]() |
Двойной или тройной клик
Какой Action написать кнопке, чтобы действие выполнялось после двойного или тройного клика ? Заранее спасибо всем откликнувшимся :-)
|
t=0;
Mouse.addListener(mc.onDbl={}); mc.onDbl.onMouseDown=function(){//mc - кнопка(мувик) if(getTimer()-t<500){//500 мс trace("double");//действия по двойному клику } t=getTimer(); } |
варианта всего два:
1. добавить к приемнику события обработчик onMouseDown() и в нем отслеживать двойное (тройное) нажатие 2. добавить обработчик из п.1 куда-нибудь ОДИН раз (лучше всего в объект Mouse) и выдавать события при помощи ASBroadcaster'а и в том и в другом случае используется getTimer() для проверки времени которое прошло с момента предыдущего клика. первый вариант, который предложил silin, занимает обработчик онМаусДаун и требует отслеживания двойного клика в каждом объекте, слушающем двойной (тройной) щелчок второй вариант чуть позапутаннее в реализации, но более универсален. если сделать так - то событие onDoubleClick не будет по формату ничем отличаться, например, от предопределенного события onMouseDown вопрос только в том что оптимальнее в данном конкретном случае. я бы использовал второй вариант... |
можно про "выдавать события при помощи ASBroadcaster'а" примерчик, а то че-то не въехать никак
|
я когда-то писал в исходники такую штуковину...
но это было давно и не правда :) сейчас я бы сделал так: Код:
// —————————————————————————————————Mouse.doubleClickTime - это время между кликами в милисекундах таким образом занят только обработчик Mouse.onMouseDown кстати, обратите внимание на отсутствие конструкции ASBroadcaster.initialize(Mouse); которая разрешила бы объекту Mouse передавать события). объект Mouse и так передает события. |
спасибо, так конечно вкуснее
чей-то хелп про broadcastMessage молчит че-то мы такого и не бачили вовсе |
однако нужны еще комментарии:
если я хочу onDoubleClick к мувику привязать приходится проверять где кличешь Mouse.addListener(mc); mc.onDoubleClick = function() { if(this.hitTest(_xmouse,_ymouse,true)) //иначе срабатывает везде где попало trace(this+" : doubleclicked"); }; или я чего-то недопонял |
ну, то что хэлп молчит - это далеко не показатель :))
21 век на дворе ! :) — дока по ASBroadcaster на английском — дока по ASBroadcaster на русском у флэш-потрошителя да, забыл упомянуть, вся эта ботва работает под МХ (6) Цитата:
если нужно именно нажатие на конкретный объект, то можно организовать такую же запутку с событием onPress, но тогда этот обработчик будет уже занят, и событие даблклика будет локально только для этого объекта :) вобщем надо выбрать что необходимо в конкретном случае |
| Часовой пояс GMT +4, время: 09:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.