Показать сообщение отдельно
Старый 26.06.2002, 15:26
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 6  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
мда... в три часа ночи я начинаю городить огород

вот универсальный способ:
Код:
// ----- Global DoubleClick Event -----
Mouse.isDouble = function() {
	if (!Mouse.clickFlag) {
		if (!Mouse.clickTimeout) {
			Mouse.clickTimeout = 300;
		}
		Mouse.clickFlag = setInterval(Mouse.cancelDouble, Mouse.clickTimeout);
	} else {
		Mouse.broadcastMessage("onDoubleClick");
		Mouse.cancelDouble();
	}
};
Mouse.cancelDouble = function() {
	if (Mouse.clickFlag) {
		clearInterval(Mouse.clickFlag);
		delete Mouse.clickFlag;
	}
};
ASBroadcaster.initialize(Mouse);
Mouse.doubleListener = {onMouseMove:Mouse.cancelDouble, onMouseDown:Mouse.isDouble};
Mouse.addListener(Mouse.doubleListener);
// -------------------------------------
//
// method for registering doubleclick-on-item event of Listbox 
FListBoxClass.prototype.setItemDblClick = function(action) {
	this.onDoubleClick = function() {
		var right = this.hitTest(_root._xmouse, _root._ymouse);
		var wrong = this.container.scrollBar_mc.hitTest(_root._xmouse, _root._ymouse);
		if (right && !wrong) {
			action(arguments);
		}
	};
	Mouse.addListener(this);
};
// -------------------------------------
//
// example:
// setting time threshold between two successive clicks
Mouse.clickTimeout = 200;
// some function - just for example
doubleClick = function () {
	trace((lst.getSelectedItem()).label);
	trace("And He said: 'Let there be light'");
	trace("...and there was light !");
};
// registering dblclick action
lst.setItemDblClick(doubleClick);
©

скрипт огороженный комментарием "Global DoubleClick Event" регистрирует новое событие мышки: onDoubleClick.
добавляем этот код в начало мувика, а потом в любом месте пишем:
любой_объект.onDoubleClick = function () {.......};
Mouse.addListener(любой_объект);

– и это будет действовать как любое из стандартных событий.

дальше добавляем в класс ФЛистбоксКласс метод, который регистрирует для данного листбокса событие онДаблКлик

пишем:
имя_любого_листбокса.setItemDblClick(любая_функция);
...и любая_функция будет срабатывать по даблклику на строке листбокса

такие пироги


Последний раз редактировалось Nox Noctis; 21.01.2004 в 20:25.