Просмотр полной версии : 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) на тоже самое только на хостинге
Поиграл в твою демку.
На 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
}
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.