Thanks for both of your input.

Charles P.


On 1/31/06, Bart Wttewaall <[EMAIL PROTECTED]> wrote:
>
> You can fake it though.. Here's a class I wrote a while ago.
> And here you find a demo:
> http://www.mediamonkey.nl/flashfiles/MouseDetection.html
>
> /** MouseDetection.as
> * @Author: Bart "Mediamonkey" Wttewaall
> * @Date: 31-10-2005
> * @Description:
> * A class that tests throug an interval if the left, middle or right
> mousebutton is up or down.
> * It returns an event that can be listened to through the EventDispatcher.
> *
> * Usage:
> import MouseDetection;
> import mx.utils.Delegate;
>
> var MD = new MouseDetection();
> MD.addEventListener(MouseDetection.LEFT_DOWN, Delegate.create(this,
> write));
> MD.addEventListener(MouseDetection.LEFT_UP, Delegate.create(this, write));
> MD.addEventListener(MouseDetection.RIGHT_DOWN, Delegate.create(this,
> write));
> MD.addEventListener(MouseDetection.RIGHT_UP, Delegate.create(this,
> write));
> MD.addEventListener(MouseDetection.MIDDLE_DOWN, Delegate.create(this,
> write));
> MD.addEventListener(MouseDetection.MIDDLE_UP, Delegate.create(this,
> write));
> MD.addEventListener(MouseDetection.DOUBLE, Delegate.create(this,
> doubleclick));
> MD.addEventListener(MouseDetection.SCROLL, Delegate.create(this, scroll));
>
> function write(evt:Object) {
>                 trace(evt.target+" = "+evt.isDown);
> }
>
> function doubleclick(evt:Object) {
>                 trace(evt.target+" doubleclick: "+evt.value+" ms");
> }
>
> function scroll(evt:Object) {
>                 trace(evt.target+" = "+evt.value);
> }
> */
>
> import mx.utils.Delegate;
> import mx.events.EventDispatcher;
>
> class MouseDetection {
>
>         // static event variables. call these as listenernames.
>         static public var LEFT_DOWN:Number   = 1 << 0;
>         static public var LEFT_UP:Number     = 1 << 1;
>         static public var RIGHT_DOWN:Number  = 1 << 2;
>         static public var RIGHT_UP:Number    = 1 << 3;
>         static public var MIDDLE_DOWN:Number = 1 << 4;
>         static public var MIDDLE_UP:Number   = 1 << 5;
>         static public var DOUBLE:Number      = 1 << 6;
>         static public var SCROLL:Number      = 1 << 7;
>
>         private var intervalID:Number;
>         private var mouseListener:Object;
>
>         // Button states (true = down, false = up)
>         private var LMB:Boolean;
>         private var RMB:Boolean;
>         private var MMB:Boolean;
>
>         // stored time between two clicks
>         private var LMBtime:Number;
>         private var MMBtime:Number;
>         private var RMBtime:Number;
>
>         // after some tests, the fastests I could click was 30 ms
>         public var time:Number = 30;
>
>         // offset between two mouseclicks to count as a doubleclick
>         public var doubletime:Number = 250;
>
>         // mixin methods from the EventDispatcher
>         public var addEventListener:Function;
>         public var removeEventListener:Function;
>         public var dispatchEvent:Function;
>         public var dispatchQueue:Function;
>
>         function MouseDetection() {
>                 EventDispatcher.initialize(this);
>                 LMB = RMB = MMB = false;
>                 LMBtime = MMBtime = RMBtime = 0;
>
>                 mouseListener = new Object();
>                 mouseListener.onMouseWheel = Delegate.create(this,
> mousewheel);
>                 Mouse.addListener(mouseListener);
>
>                 startTesting();
>         }
>
>         public function startTesting() {
>                 intervalID = setInterval(this, "enterframe", time);
>         }
>
>         public function stopTesting() {
>                 clearInterval(intervalID);
>         }
>
>         // -- the rest are private methods, don't bother with them
>
>         private function enterframe() {
>                 LMBsetter = Key.isDown(1);
>                 RMBsetter = Key.isDown(2);
>                 MMBsetter = Key.isDown(4);
>
>                 // this commented bit of code doesn't seem to work all the
> time,
> must be because of ALT
>                 // Keycodes: 18 = ALT, 37 = LEFT, 39 = RIGHT
>                 // backbutton = ALT+LEFT, forwardbutton = ALT+RIGHT
>
>                 //if (Key.isDown(18) && Key.isDown(37))
> trace("backbutton");
>                 //if (Key.isDown(18) && Key.isDown(39))
> trace("forwardbutton");
>         }
>
>         // -- LMB property setter, without getter (no need for it).
>         // This catches the true/false value, checks for double entries
> (!!!)
> and dispatches the
>         // correct event before assigning the value to the LMB boolean,
> thus
> saving a few lines.
>
>         function set LMBsetter(b:Boolean) {
>                 if (b && !LMB) {
>                         dispatchEvent({type:LEFT_DOWN, target:"LMB",
> isDown:true});
>                 } else if (!b && LMB) {
>                         dispatchEvent({type:LEFT_UP, target:"LMB",
> isDown:false});
>
>                         // test doubleclick
>                         var diff = getTimer()-LMBtime;
>                         if (diff < doubletime) dispatchEvent({type:DOUBLE,
> target:"LMB",
> value:diff});
>                         LMBtime = getTimer();
>                 }
>                 LMB = b;
>         }
>
>         function set MMBsetter(b:Boolean) {
>                 if (b && !MMB) {
>                         dispatchEvent({type:MIDDLE_DOWN, target:"MMB",
> isDown:true});
>                 } else if (!b && MMB) {
>                         dispatchEvent({type:MIDDLE_UP, target:"MMB",
> isDown:false});
>
>                         // test doubleclick
>                         var diff = getTimer()-MMBtime;
>                         if (diff < doubletime) dispatchEvent({type:DOUBLE,
> target:"MMB",
> value:diff});
>                         MMBtime = getTimer();
>                 }
>                 MMB = b;
>         }
>
>         function set RMBsetter(b:Boolean) {
>                 if (b && !RMB) {
>                         dispatchEvent({type:RIGHT_DOWN, target:"RMB",
> isDown:true});
>                 } else if (!b && RMB) {
>                         dispatchEvent({type:RIGHT_UP, target:"RMB",
> isDown:false});
>
>                         // test doubleclick
>                         var diff = getTimer()-RMBtime;
>                         if (diff < doubletime) dispatchEvent({type:DOUBLE,
> target:"RMB",
> value:diff});
>                         RMBtime = getTimer();
>                 }
>                 RMB = b;
>         }
>
>         private function mousewheel(direction:Number) {
>                 if (direction > 0) dispatchEvent({type:SCROLL,
> target:"scrollUp",
> value:direction});
>                 else dispatchEvent({type:SCROLL, target:"scrollDown",
> value:direction});
>         }
> }
>
>
> 2006/1/31, elibol <[EMAIL PROTECTED]>:
> > All the Mouse events are summarized in the Mouse Class documentation.
> There
> > isn't a right mouse click event.
> >
> > M.
> >
> > On 1/31/06, Charles Parcell <[EMAIL PROTECTED]> wrote:
> > >
> > > I am aware that you can alter the right mouse click context menu, but
> is
> > > there a right mouse click event that can be used to activate other
> code??
> > >
> > > Charles P.
> > >
> > > _______________________________________________
> > > Flashcoders mailing list
> > > [email protected]
> > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > >
> > >
> > >
> > _______________________________________________
> > Flashcoders mailing list
> > [email protected]
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> _______________________________________________
> Flashcoders mailing list
> [email protected]
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to