Flex中的坐标系转换

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

全局坐标stage级别,坐标原点为舞台的左上角,如MouseEventstageXstageY坐标。

本地坐标:组件级别的坐标系,相对坐标,坐标原点为相对的组件的左上角MouseEventlocalXlocalY坐标,以及容器中组件的xy属性都为本地相对坐标。

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

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


全局坐标、本地坐标、内容坐标可以通过系统内置方法互相转换


contentToGlobal   

内容to全局

contentToLocal 

内容to本地

globalToContent   

全局to内容

globalToLocal 

全局to本地

localToContent

本地to内容

localToGlobal 

本地to全局


以下为例子,将VBox中的内容坐标转换为Application的本地坐标

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml

layout="absolute" minWidth="955" minHeight="600">

<mx:Script>

<![CDATA[

import com.PopupView;

import mx.collections.ArrayCollection;

import mx.managers.PopUpManager;

protected function button1_clickHandler(event:MouseEvent):void

{

//弹出界面可以随便自己定义,供测试即可,该源码不提供

var customView:PopupView = new PopupView();

PopUpManager.addPopUp(customView, this);

//寻找坐标系参照物,localButton在VBox里的内容坐标系内的坐标要转换为本地坐标系(Application)

var localPoint:Point = new Point(localButton.x, localButton.y + localButton.height);

var contenPoint:Point = container.contentToLocal(localPoint);

customView.x = contenPoint.x;

customView.y = contenPoint.y;

}

]]>

</mx:Script>

<mx:VBox id="container" width="400" height="100" borderColor="red" borderStyle="solid" paddingLeft="40">

<mx:TextInput/>

<mx:TextInput/>

<mx:TextInput/>

<mx:TextInput/>

<mx:TextInput/>

<mx:TextInput/>

<mx:TextInput/>

<mx:TextInput/>

<mx:TextInput id="test"/>

<mx:Button id="localButton" label="test" click="button1_clickHandler(event)"/>

</mx:VBox>

</mx:Application>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值