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>

Flex各类型坐标转换(全局、本地、内容坐标间转换)的更多相关文章

  1. 元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHandlers?

    报错主要部分如下: Error building SqlSession.### Cause: org.apache.ibatis.builder.BuilderException: Error cre ...

  2. MyBatis 元素类型为 "configuration" 的内容必须匹配 ".....

    修改MyBatis配置文件时,添加typeAliases节点,报了一个BuilderException: org.apache.ibatis.exceptions.PersistenceExcepti ...

  3. Caused by: 元素类型为 "package" 的内容必须匹配 "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)"

    Caused by: 元素类型为 "package" 的内容必须匹配 "(result-types?,interceptors?,default-interceptor- ...

  4. Flex读取txt文件里的内容(二)

    Flex读取txt文件里的内容 自己主动生成的文件 LoadTxt-app.xml: <?xml version="1.0" encoding="utf-8&quo ...

  5. 解决 Mybatis 元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id*,result*,association*,collection*,discriminat

    在配置 mybatis mapper.xml文件时, 一不小心就会报如下类似的异常: Caused by: org.springframework.beans.factory.BeanCreation ...

  6. Flex读取txt文件中的内容(三)

    Flex读取txt文件中的内容 1.设计源码 LoadTxt.mxml: <?xml version="1.0" encoding="utf-8"?> ...

  7. Flex读取txt文件中的内容(二)

    Flex读取txt文件中的内容 自动生成的文件 LoadTxt-app.xml: <?xml version="1.0" encoding="utf-8" ...

  8. Flex读取txt文件中的内容(一)

    Flex读取txt文件中的内容 phone.txt: 13000003847 13000003848 13000003849 13000003850 13000003851 13000003852 1 ...

  9. Flex读取txt文件中的内容报错

    Flex读取txt文件中的内容 1.具体错误如下 2.错误原因 读取文件不存在 var file:File = new File(File.applicationDirectory.nativePat ...

随机推荐

  1. go语言 hello 小结

    在编译go语言的时候: 写了一段这样的代码 package main import "fmt" func main() {     fmt.Println("Hello, ...

  2. Nofuser - deobfuscator for Confuser

    google搜索了好久,最终找到这个工具,可直接使用. 虽然脱后有很多无用代码,但关键代码是还是很清晰的! ----------------------------NoFuser----------- ...

  3. 通过python将图片生成字符画

    基础知识: 1.python基础知识   快速学习链接:https://www.shiyanlou.com/courses/214 2.linux命令行操作   快速学习链接:https://www. ...

  4. 51Node 1483----化学变换(暴力枚举)

    51Node  1483----化学变换 有n种不同的化学试剂.第i种有ai升.每次实验都要把所有的化学试剂混在一起,但是这些试剂的量一定要相等.所以现在的首要任务是把这些化学试剂的量弄成相等. 有两 ...

  5. Mybatis添加返回主键ID

    1.对应xml文件<insert id="insert" parameterType="DetectStandard"useGeneratedKeys=& ...

  6. 放弃OT了,找了个新框架ThinkCMF

    放弃OT了,找了个新框架ThinkCMF,感觉还不错,用用看. 选择OT的原因: 1. OT基于ThinkPHP 2. OT对ThinkPHP进行了封装,使得开发应用更加简单 3. yershop应用 ...

  7. Java新集合示意图

    Java的新集合实际上只有3个集合组件:①Map ②List ③Set 在Java 1.2后应该尽量避免使用Hashtable,Vector 和Stack: 假如在一个列表中部进行大量的插入和删除操作 ...

  8. webapi的返回类型,webapi返回图片

    1.0 首先是返回常用的系统类型,当然这些返回方式不常用到.如:int,string,list,array等.这些类型直接返回即可. public List<string> Get() { ...

  9. java集合-HashTable

    概述 和 HashMap 一样,Hashtable 也是一个散列表,它存储的内容是键值对. Hashtable 在 Java 中的定义为: public class Hashtable<K,V& ...

  10. Julius JS – 最流行的网页语音识别库

    JuliusJS 是用于在网页中的语音识别库.这是 Julius(由日本京都大学和日本IPA联合开发的一个实用高效双通道的大词汇连续语音识别引擎)的 JavaScript 实现.它实时侦听用户的语音并 ...