代码之家  ›  专栏  ›  技术社区  ›  Dan

flex中屏幕上的鼠标位置

  •  2
  • Dan  · 技术社区  · 17 年前

    我试图在屏幕上获得鼠标的实际坐标,以便在该位置创建本机窗口,但我似乎无法找到正确的方法。

    this.contentMouseX and this.contentMouseY
    

    这给了我当前阶段的合作,这很好,然后我补充说:

    NativeApplication.nativeApplication.activeWindow.x and activeWindow.y
    

    这很接近,但没有考虑应用程序标题栏。

    一定有一种更简单、更直接的方法可以做到这一点,我相信,有谁能给我一些建议,因为我在谷歌上找不到?

    我试过localToGlobal,但它不起作用,似乎“global”的意思是在应用程序中,而不是在屏幕上,这对我来说是没有用的。下面是一个显示失败的示例。。。

    <?xml version="1.0" encoding="utf-8"?>
    <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <mx:Script>
            <![CDATA[
                import mx.core.Application;
    
                private function click(evt:MouseEvent):void
                {
                    var pt:Point = new Point( this.contentMouseX, this.contentMouseY );
                    var global:Point = Application.application.localToGlobal( pt );
    
                    trace( "local_x: " + pt.x + " x " + pt.y );
                    trace( "global_x: " + global.x + " x " + global.y );
                }
            ]]>
        </mx:Script>
    
        <mx:HBox horizontalAlign="center" width="100%">
            <mx:Button id="butt" label="Click" click="click(event)" />
        </mx:HBox>
    </mx:WindowedApplication>
    
    3 回复  |  直到 10 年前
        1
  •  6
  •   Gabriel    17 年前

    在一个错误的开始之后。。。很抱歉。。。

    您可以使用stage.nativeWindow.globalToScreen-这将满足您的需要。

    <?xml version="1.0" encoding="utf-8"?>
    <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
    <![CDATA[
    import mx.core.Application;
    
    private function click(evt:MouseEvent):void
    {
      var pt:Point = new Point( this.butt.x, this.butt.y );
      var global:Point = Application.application.localToGlobal( pt );
    
      trace( "local_x: " + pt.x + " x " + pt.y );
      trace( "global_x: " + global.x + " x " + global.y );
    
      var p:Point = stage.nativeWindow.globalToScreen(new Point(this.butt.x, this.butt.y));
    
      trace(p.x + " x " + p.y);
      var na:NativeWindow = new NativeWindow(new NativeWindowInitOptions());
      na.visible = true;
      na.width = 100;
      na.height = 100;
      na.x = p.x;
      na.y = p.y;
      na.activate();
    
    }
    ]]>
    </mx:Script>
    
    
    <mx:Button x="10" y="10" id="butt" label="Click" click="click(event)" />
    
    </mx:WindowedApplication>
    
        2
  •  0
  •   Rick J    17 年前
    //get the application level mouse coordinate
    var local_x : int = this.mouseX; 
    
    //convert this x value into a global coordinate
    var pt : Point = new Point(local_x, 0);
    var global_x : int = this.localToGlobal(pt).mouseX;
    
        3
  •  0
  •   Hooray Im Helping codaddict    17 年前

    这是否有效:

    private function click(evt:MouseEvent):void
    {
      var pt:Point = new Point( evt.localX, evt.localY );
      var global:Point = new Point( evt.stageX, evt.stageY);
    
      trace( "local_x: " + pt.x + " x " + pt.y );
      trace( "global_x: " + global.x + " x " + global.y );
    }