2015-12-14 2 views
0

С Flash Player 11.2, теперь мы имеем доступ к событиям мыши для правой кнопки мыши:кнопку AS3 правой кнопкой мыши перетащить и падение

  • MouseEvent.RIGHT_CLICK
  • MouseEvent.RIGHT_MOUSE_DOWN
  • MouseEvent.RIGHT_MOUSE_UP

Однако, когда я пытаюсь использовать их для реализации правой кнопки мыши, перетащите &, кажется, что, как только правая кнопка мыши опустится, я больше не получаю MouseEvent. MOUSE_MOVE и члены MouseX и MouseY сцены перестают обновляться до тех пор, пока кнопка не будет отпущена. Это делает невозможным реализацию этого перетаскивания. & drop.

Используйте пример кода в Flash Builder ниже, чтобы увидеть, что я имею в виду:

  • Запуск его, переместите мышь вокруг, и вы увидите журналы вашего обновления положения курсора мыши.
  • Нажмите и удерживайте LMB, передвиньте мышь, вы увидите больше журналов, отлично!
    • Освободите LMB, нажмите и удерживайте LMB, передвигайте мышь, никаких журналов, плохо!

Является ли это ограничение AS3? Кажется, я не могу найти документацию об этом.

Пример кода:

package 
{ 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 

    public class TestFlash extends Sprite 
    { 
     public function TestFlash() 
     { 
      if(stage){ 
      stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); 
      stage.addEventListener(MouseEvent.MOUSE_DOWN, onLMBDown); 
      stage.addEventListener(MouseEvent.MOUSE_UP, onLMBUp); 
      stage.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN, onRMBDown); 
      stage.addEventListener(MouseEvent.RIGHT_MOUSE_UP, onRMBUp); 
      } 

     } 

     private function onMouseMove(event:MouseEvent) : void 
     { 
      trace("Mouse Pos, from event: x = " + event.localX + " y = " + event.localY + " from stage: x = " + stage.mouseX + " y = " + stage.mouseY); 
     } 

     private function onRMBDown(event:MouseEvent) : void 
     { 
      trace("RMB down"); 
     } 

     private function onRMBUp(event:MouseEvent) : void 
     { 
      trace("RMB up"); 
     } 

     private function onLMBDown(event:MouseEvent) : void 
     { 
      trace("LMB down"); 
     } 

     private function onLMBUp(event:MouseEvent) : void 
     { 
      trace("LMB up"); 
     } 
    } 
} 
+0

Можете ли вы показать код, который используется для получения этого результата? Я попробовал в FlashPro только сейчас, и он работал как ожидалось – BadFeelingAboutThis

ответ

0

Судя по проблеме вы описываете, я думаю, вам нужно добавить функцию ввода кадра, в противном случае триггер будет активировать только на раме, что мыши нажата и когда ее освобожденный

addEventListener(Event.ENTER_FRAME, dragdrop) 
function dragdrop(event:Event):void { 
"add dragging event here" 
} 
Смежные вопросы