Лагги пользовательского курсора - Flash

Сделав собственный курсор во flash as3, я заменил его метлой (простой векторный мувиклип). Код представляет собой стандартный код настраиваемого курсора ниже:

private function listeners():void  {
    this.addEventListener(MouseEvent.MOUSE_MOVE, attachBroom);
}

private function attachBroom(e:MouseEvent):void 
{
    broomStick.x = e.stageX - 10;
    broomStick.y = e.stageY - 5;
    e.updateAfterEvent();
}

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


person Tobe_Sta    schedule 10.09.2012    source источник


Ответы (2)


Попробуйте это вместо вашего

private function listeners():void  {
    this.addEventListener(Event.ENTER_FRAME, attachBroom);
}

private function attachBroom(e:Event):void 
{
    broomStick.x = stage.mouseX - 10;
    broomStick.y = stage.mouseY - 5;
}

логика такая же, но событие ENTER_FRAME быстрее, чем MOUSE_EVENTS. Также нет UpdataAfterEvent для ENTER_FRAME.

person Moorthy    schedule 10.09.2012
comment
Чтобы уточнить, ENTER_FRAME запускается меньше раз в секунду, чем MOUSE_MOVE (при условии, что вы не настраиваете вручную частоту кадров, чтобы она была действительно высокой), что снижает нагрузку на ресурсы. При этом вам следует взглянуть на ответ, объясняющий собственные курсоры, поскольку они интегрируются с мышью на уровне ОС и не требуют каких-либо специальных событий перегрузки ресурсов для отображения поддельного курсора мыши. - person Pixel Elephant; 10.09.2012

В настоящее время существует гораздо лучший способ создавать собственные курсоры.

Начиная с Flash Player 10.2, вы можете использовать собственные курсоры, которые используют собственные ресурсы ОС.

http://www.adobe.com/devnet/flashplayer/articles/native-mouse-cursors.html

person Jevgenij Dmitrijev    schedule 10.09.2012