![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2003
Адрес: Москва
Сообщений: 18
|
Какой Action написать кнопке, чтобы действие выполнялось после двойного или тройного клика ? Заранее спасибо всем откликнувшимся :-)
|
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
варианта всего два:
1. добавить к приемнику события обработчик onMouseDown() и в нем отслеживать двойное (тройное) нажатие 2. добавить обработчик из п.1 куда-нибудь ОДИН раз (лучше всего в объект Mouse) и выдавать события при помощи ASBroadcaster'а и в том и в другом случае используется getTimer() для проверки времени которое прошло с момента предыдущего клика. первый вариант, который предложил silin, занимает обработчик онМаусДаун и требует отслеживания двойного клика в каждом объекте, слушающем двойной (тройной) щелчок второй вариант чуть позапутаннее в реализации, но более универсален. если сделать так - то событие onDoubleClick не будет по формату ничем отличаться, например, от предопределенного события onMouseDown вопрос только в том что оптимальнее в данном конкретном случае. я бы использовал второй вариант... |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
я когда-то писал в исходники такую штуковину...
но это было давно и не правда :) сейчас я бы сделал так: // —————————————————————————————————
// doubleclick event
Mouse.addListener(Mouse);
// dblclick time (msec)
Mouse.doubleClickTime = 300;
// global dblclick event generator
Mouse.onMouseDown = function() {
var md = Mouse.onMouseDown;
trace("["+md.click+"]"+(getTimer()-md.click)+" :: "+Mouse.doubleClickTime);
if (md.click && (getTimer()-md.click<=Mouse.doubleClickTime)) {
this.broadcastMessage("onDoubleClick");
} else {
md.click = getTimer();
}
};
Mouse.onMouseMove = function() {
Mouse.onMouseDown.click = 0;
};
// —————————————————————————————————
// sample:
// **
Mouse.addListener(this);
// **
this.onDoubleClick = function() {
trace(this+" : doubleclicked");
};
Mouse.doubleClickTime - это время между кликами в милисекундах таким образом занят только обработчик Mouse.onMouseDown кстати, обратите внимание на отсутствие конструкции ASBroadcaster.initialize(Mouse); которая разрешила бы объекту Mouse передавать события). объект Mouse и так передает события. |
|
|||||
|
однако нужны еще комментарии:
если я хочу onDoubleClick к мувику привязать приходится проверять где кличешь Mouse.addListener(mc); mc.onDoubleClick = function() { if(this.hitTest(_xmouse,_ymouse,true)) //иначе срабатывает везде где попало trace(this+" : doubleclicked"); }; или я чего-то недопонял |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
ну, то что хэлп молчит - это далеко не показатель :))
21 век на дворе ! :) — дока по ASBroadcaster на английском — дока по ASBroadcaster на русском у флэш-потрошителя да, забыл упомянуть, вся эта ботва работает под МХ (6) Цитата:
если нужно именно нажатие на конкретный объект, то можно организовать такую же запутку с событием onPress, но тогда этот обработчик будет уже занят, и событие даблклика будет локально только для этого объекта :) вобщем надо выбрать что необходимо в конкретном случае |
![]() |
Часовой пояс GMT +4, время: 05:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|