Показать сообщение отдельно
Старый 19.09.2011, 18:29
searinox вне форума Посмотреть профиль Отправить личное сообщение для searinox Найти все сообщения от searinox
  № 1  
Ответить с цитированием
searinox

Регистрация: May 2011
Сообщений: 76
По умолчанию Кнопка-модификатор значения - проблема в браузере.

Всем привет.
Есть задача:
Написать кнопку которая модифицирует значение в текстовом поле при: обычном клике, при зажимании кнопки мыши. В плеш флеере работает прекрасно.

У меня следующая проблема:
Когда флешка имбедится в браузер, если вместо обычного клика сделать двойной клик, то происходит эффект "залипания" и все происходит так, будто кнопка зажата.

Код AS3:
count_up_bt.addEventListener(MouseEvent.MOUSE_DOWN, countButtonMouseDown);
 
private function countButtonMouseDown(e:MouseEvent): void {
                                  trace("countButtonMouseDown");
			ModifyCountNumber(e);
			//Remove old listeners
			e.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN, countButtonMouseDown);
			//Add new listeners
			e.currentTarget.addEventListener(MouseEvent.MOUSE_OUT, countButtonMouseUp);
			e.currentTarget.addEventListener(MouseEvent.MOUSE_UP, countButtonMouseUp);			
			e.currentTarget.addEventListener(Event.ENTER_FRAME, countButtonEnterFrame);
 
		}
 
private function countButtonMouseUp(e:MouseEvent): void {
                                  trace("countButtonMouseUp");
			//Remove old listeners and reset couter;
			e.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT, countButtonMouseUp);
			e.currentTarget.removeEventListener(MouseEvent.MOUSE_UP, countButtonMouseUp);			
			e.currentTarget.removeEventListener(Event.ENTER_FRAME, countButtonEnterFrame);
                                  trace("Removed EnterFrameEvent")
			enterFrameCounter = 0;
			//Add new listeners
			e.currentTarget.addEventListener(MouseEvent.MOUSE_DOWN, countButtonMouseDown);			
		}
 
var enterFrameCounter:uint = 0;
 
		private function countButtonEnterFrame(e:Event):void {
			//if counter uninitialized then initialize.
			if (enterFrameCounter == 0) {
				enterFrameCounter = 1;
			}
 
			if (enterFrameCounter == 6 || enterFrameCounter == 12 || enterFrameCounter == 18 || enterFrameCounter == 24) {
				ModifyCountNumber(e);
				enterFrameCounter++;
			} else if (enterFrameCounter == 25){
				enterFrameCounter = 1;
			} else {
				enterFrameCounter++;
			}
		}
 
ModifyCountNumber(e:Event):void {
Значение в некотором текстовом поле модицифируется на какое-то значение однажды
}

Пример трейса при 2 кликах сделанных не чаще чем через 1 сек.:

Removed EnterFrameEvent
countButtonMouseUp
countButtonMouseDown
Removed EnterFrameEvent
countButtonMouseUp
countButtonMouseDown

Пример трейса при 2 кликах сделанных не реже чем через 0.5 сек.:

countButtonMouseDown
Removed EnterFrameEvent
countButtonMouseUp
countButtonMouseDown
Removed EnterFrameEvent
countButtonMouseUp
countButtonMouseDown

(да, да в этом случае от куда-то генерируется 3 клика)

Вопрос: как избавится от этого бага?


Последний раз редактировалось searinox; 19.09.2011 в 18:57. Причина: Добавлен трейс