PDA

Просмотр полной версии : MouseEvent.DOUBLE_CLICK пропуска событий


undefined
01.05.2015, 19:27
Имеется спрайт, подписанный на MouseEvent.DOUBLE_CLICK.По даблклику спрайт поворачивается на 90 градусов(курсор мыши при этом остается в рамках бокса спрайта).И если продолжить остервенело долбить кнопку мыши все последующие даблклики перестают приходить.При этом если чуть сдвинуть мыша, то выскочит еще 1 даблклик и потом опять пропуски.Если остановиться и выждать 1-1.5 сек.- снова 1 событие и тишина.Воспроизводится,похоже, только в хроме.Локально все ок.Кто-нибудь сталкивался? Бага впринципе некритичная, но напрягает что в самом ходовом браузере.

caseyryan
01.05.2015, 20:07
В порядке бреда, updateAfterEvent() пробовал?

undefined
01.05.2015, 20:25
неа, не помогает

Добавлено через 25 минут
изолировал проблему.Кто под хромом сидит - потыркайте плз.Может это только у меня такая херь.
хех, а как делать чтоб предпросмотр был прямо в сообщение?
Вот Линк (https://dl.dropboxusercontent.com/u/68778662/DClick_test.swf) на тоже самое только на хостинге

callme
01.05.2015, 21:15
Поиграл в твою демку.

На firefox можно тыркать с какой хочешь скоростью.
На chrome приходится ждать иначе перестает реагировать.

OlmerDale
01.05.2015, 21:21
Если с родным не работает, может свой дабл сделать?

undefined
01.05.2015, 21:27
Видимо придется.

Добавлено через 25 минут
Опера тоже отличилась - тоже стопорится

Добавлено через 14 часов 40 минут
на будущее, может кому пригодится.Пропатченый спрайт:
package {
import flash.display.*;
import flash.events.*;

/**
* ...
* @author
*/
public class PatchedSprite extends Sprite
{
private var lastClickTimestamp:Number = -1;
private const DELAY:Number = 200; // time interval beetween two clicks
public function PatchedSprite()
{
super();
this.addEventListener(MouseEvent.CLICK, hClick, false, 0, true);

}

private function hClick(e:MouseEvent):void {
if (this.hasEventListener(MouseEvent.DOUBLE_CLICK)) {
var date:Date = new Date();
if (lastClickTimestamp<0) {
lastClickTimestamp = date.getTime();
} else if ((date.getTime() - lastClickTimestamp) <= DELAY) {
var ev:MouseEvent = new MouseEvent(MouseEvent.DOUBLE_CLICK, e.bubbles, e.cancelable, e.localX, e.localY, e.relatedObject, e.ctrlKey, e.altKey, e.shiftKey, e.buttonDown);
this.dispatchEvent(ev);
lastClickTimestamp = -1;
} else {
lastClickTimestamp = date.getTime();
}
}
}
override public function set doubleClickEnabled(value:Boolean):void {
// override to disable default doubleclicks
}


}

}