Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I'm not sure if I understood you correctly. So you want to start drag on single click and drag until doubleclicked right? If so you can try something like that:</p> <pre><code>public class ClickAndDrag extends Sprite { private var clickTimeout:uint; private var doubleClickSpeed:int = 500; private var clickedOnce:Boolean; private var mouseOnClick:Point; private var isDragging:Boolean; public function ClickAndDrag() { graphics.beginFill(Math.random()*0xffffff, 1); graphics.drawCircle(0, 0, 20); graphics.endFill(); this.buttonMode = true; addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown); } private function handleMouseDown(e:MouseEvent):void { if (isDragging) { if (clickedOnce) handleDoubleClicked(); else { //if it's not clicket within next doubleClickSpeed ms then doubleClickSpeed will be set to false; clickedOnce = true; clickTimeout = setTimeout( handleClickTimeout, doubleClickSpeed ); } } else { handleClickAndDrag(); } } //clicked once when dragging private function handleClickOnce():void { graphics.clear(); graphics.beginFill(Math.random()*0xffffff, 1); graphics.drawCircle(0, 0, 20); graphics.endFill(); } //clicked once when not dragging private function handleClickAndDrag():void { isDragging = true; this.addEventListener(Event.ENTER_FRAME, handleFrame); mouseOnClick = new Point(this.mouseX, this.mouseY); } //doubleclicked when dragging private function handleDoubleClicked():void { clearTimeout(clickTimeout); clickedOnce = false; this.removeEventListener(Event.ENTER_FRAME, handleFrame); isDragging = false; } private function handleClickTimeout():void { clickedOnce = false; handleClickOnce(); } private function handleFrame(e:Event):void { this.x = stage.mouseX - mouseOnClick.x; this.y = stage.mouseY - mouseOnClick.y; } } </code></pre> <p>It basically waits for mousedown and if it's already dragging it checks if you clicked once (changes color) ot twice (stops dragging). Or if it's not dragging yet then it starts dragging. You may also want to handle leaving the stage (Event.MOUSE_LEAVE).</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload