我正在使用Flex 4.6构建一个RIA应用程序,其中包含一个主borderContainer(页面),它可以包含其他一些borderContainers(图形或文本元素)。
我在页面上添加了一个事件监听器来监听点击事件:
page.addEventListener(MouseEvent.CLICK, clickHandler, true);
clickHandler看起来像这样:
private function clickHandler(event:MouseEvent):void
{
// Remove event listeners
page.removeEventListener(MouseEvent.CLICK, clickHandler, true);
// Get click position
objX = event.localX;
objY = event.localY;
}
我的问题是虽然事件的currentTarget始终是页面(正常),但目标可以是页面或其子项之一,然后localX不会给我在页面上但在子项上的位置。
有没有办法确保页面始终是事件的目标?有什么比停止页面上的捕获阶段所以它不会更深入?
提前感谢您的帮助
达雷尔
答案 0 :(得分:1)
我想你可能会问错误的问题。据我了解,你想要x / y位置相对于'page'。您可以使用DisplayObject#globalToLocal()功能查找此内容。
只需获取全局坐标并将它们转换为相对于“page”的本地坐标:
var coordinates:Point = new Point(event.stageX, event.stageY);
coordinates = page.globalToLocal(coordinates);
objX = coordinates.x;
objY = coordinates.y;