zoukankan      html  css  js  c++  java
  • Flex各类型坐标转换(全局、本地、内容坐标间转换)

    Flex包含3种坐标:全局坐标、本地坐标、内容坐标

    全局坐标:stage级别,坐标原点为舞台的左上角,如MouseEvent的stageX、stageY坐标。

    本地坐标:组件级别的坐标系,相对坐标,坐标原点为相对的组件的左上角,如MouseEvent的localX、localY坐标,以及容器中组件的x、y属性都为本地相对坐标。

    内容坐标:组件级别的坐标系,相对坐标,在有滚动条的情况下,全部内容所占的区域的坐标系,坐标原点为相对的组件的左上角,可以理解为包含滚动条的整个内容面板为一个坐标系。如组件的contentMouseX、contentMouseY属性为内容坐标。

    下图为官方提供的图说明三类坐标的关系:

    Flex包含3种坐标:全局坐标、本地坐标、内容坐标

    全局坐标:stage级别,坐标原点为舞台的左上角,如MouseEvent的stageX、stageY坐标。

    contentToGlobal   

    内容to全局

    contentToLocal 

    内容to本地

    globalToContent   

    全局to内容

    globalToLocal 

    全局to本地

    localToContent

    本地to内容

    localToGlobal 

    本地to全局


    有一个示例,以localToGlobal和globalToLocal为例,描述坐标转换的使用方法

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   
    3.                xmlns:s="library://ns.adobe.com/flex/spark"   
    4.                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">  
    5.     <fx:Declarations>  
    6.         <!--当前示例为:有一排按钮,一个漂浮窗口,点击按钮,漂浮窗口至于当前按钮正上方-->  
    7.     </fx:Declarations>  
    8.     <fx:Script>  
    9.         <![CDATA[ 
    10.             private function setContainerPosition(event:MouseEvent):void 
    11.             { 
    12.                 var btn:Button=event.currentTarget as Button; 
    13.                 var point:Point= new Point(); 
    14.                 //获取触发点击事件当前按钮的全局坐标 
    15.                 point=btn.localToGlobal(point); 
    16.                 //相对于整个Application下,获取触发事件按钮的本地坐标 
    17.                 //即漂浮容器container的父容器(当前为Application)调用globalToLocal方法 
    18.                 point=this.globalToLocal(point); 
    19.                 //设置漂浮面板坐标,同为相对于整个Application下的本地坐标 
    20.                 container.x=point.x-container.width/2+btn.width/2; 
    21.                 container.y=point.y-container.height; 
    22.             } 
    23.         ]]>  
    24.     </fx:Script>  
    25.     <s:HGroup width="500" height="60" bottom="5" left="200" gap="20">  
    26.         <s:Button id="btn1" label="btn1" click="setContainerPosition(event)"/>  
    27.         <s:Button id="btn2" label="btn2" click="setContainerPosition(event)"/>  
    28.         <s:Button id="btn3" label="btn3" click="setContainerPosition(event)"/>  
    29.     </s:HGroup>  
    30.     <s:BorderContainer id="container" cornerRadius="4" width="200" height="100">  
    31.         <s:Label text="漂浮容器"/>  
    32.     </s:BorderContainer>  
    33. </s:Application>  





  • 相关阅读:
    5个经典的javascript面试问题
    去年的一些面试题
    各种奇妙的hack
    jQuery工作原理解析以及源代码示例
    JavaScript Window
    原生JavaScript技巧大收集(1~10)
    蜘蛛爬虫类程序抓取有防盗链的网站处理 php和wget命令简单破解防盗链网站的功能
    Git SSH Key 生成步骤
    linux下ssh使用rsa认证教程
    linux FTP服务器 VSFTP配置手册
  • 原文地址:https://www.cnblogs.com/frogbag/p/3875425.html
Copyright © 2011-2022 走看看