Skip to main content
arofa
Participant
February 27, 2018
Answered

AS3

  • February 27, 2018
  • 2 replies
  • 451 views

Is it possible in AS3 to have a left click mouse function to drag and holding control key + click to do something else?

Thank you,

arofa

This topic has been closed for replies.
Correct answer JoãoCésar17023019

Hi.

You can do something like this:

import flash.events.KeyboardEvent;

import flash.ui.Keyboard;

import flash.events.MouseEvent;

var ctrl:Boolean = false;

var mouseDown:Boolean = false;

function start():void

{

    stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

    stage.addEventListener(MouseEvent.MOUSE_UP, mouseHandler);

    stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseHandler);

    stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);

    stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler);

}

function mouseHandler(e:MouseEvent):void

{

    if (e.type == MouseEvent.MOUSE_DOWN)

        mouseDown = true;

    else if (e.type == MouseEvent.MOUSE_UP)

        mouseDown = false;

  

    if (e.type == MouseEvent.MOUSE_MOVE)

    {

        if (ctrl && mouseDown)

            trace("ctrl + dragging");

    }

}

function keyHandler(e:KeyboardEvent):void

{

    if (e.type == KeyboardEvent.KEY_DOWN)

    {

        if (e.keyCode == Keyboard.CONTROL)

            ctrl = true;

    }

    else if (e.type == KeyboardEvent.KEY_UP)

    {

        if (e.keyCode == Keyboard.CONTROL)

            ctrl = false;

    }

}

start();

I hope it helps.

Regards,

JC

2 replies

Colin Holgate
Inspiring
February 27, 2018

I'm not sure if JC's idea will work out, but there is already a context menu system in place, since Flash 9. Here's the documentation:

ContextMenu - Adobe ActionScript® 3 (AS3 ) API Reference

JoãoCésar17023019
Community Expert
JoãoCésar17023019Community ExpertCorrect answer
Community Expert
February 27, 2018

Hi.

You can do something like this:

import flash.events.KeyboardEvent;

import flash.ui.Keyboard;

import flash.events.MouseEvent;

var ctrl:Boolean = false;

var mouseDown:Boolean = false;

function start():void

{

    stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler);

    stage.addEventListener(MouseEvent.MOUSE_UP, mouseHandler);

    stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseHandler);

    stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);

    stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler);

}

function mouseHandler(e:MouseEvent):void

{

    if (e.type == MouseEvent.MOUSE_DOWN)

        mouseDown = true;

    else if (e.type == MouseEvent.MOUSE_UP)

        mouseDown = false;

  

    if (e.type == MouseEvent.MOUSE_MOVE)

    {

        if (ctrl && mouseDown)

            trace("ctrl + dragging");

    }

}

function keyHandler(e:KeyboardEvent):void

{

    if (e.type == KeyboardEvent.KEY_DOWN)

    {

        if (e.keyCode == Keyboard.CONTROL)

            ctrl = true;

    }

    else if (e.type == KeyboardEvent.KEY_UP)

    {

        if (e.keyCode == Keyboard.CONTROL)

            ctrl = false;

    }

}

start();

I hope it helps.

Regards,

JC

arofa
arofaAuthor
Participant
February 28, 2018

Thank you very much for your help João César, that is what I needed

Arofa

JoãoCésar17023019
Community Expert
Community Expert
February 28, 2018

Excellent!

You're welcome!