AS3全局与局部坐标转换
在大部分需要用户点击的游戏中,坐标的转换是一种必须熟练掌握的方法。
首先在一个700x700的舞台中创建2个方块,红色的大方块A是600x600,位于(50,50),绿色的小方块B是300x300。A是B的父容器,B相对于舞台位于(200,200)。
接下来做一系列的测试来阐明这2个方法是如何运作的。
假设我们点B方块的中心点,即全局(350,350),A(300,300),B(150,150),看看结果分别会怎么样:
private function onClickHandler(e:MouseEvent):void
{
e.stopPropagation();
var stagePoint:Point = new Point(stage.mouseX, stage.mouseY);
trace(stagePoint.x); //350
trace(stagePoint.y); //350
trace(stage.globalToLocal(stagePoint).x); //350
trace(stage.globalToLocal(stagePoint).y); //350
trace(smallShape.globalToLocal(stagePoint).x); //150
trace(smallShape.globalToLocal(stagePoint).y); //150
trace(bigShape.globalToLocal(stagePoint).x); //300
trace(bigShape.globalToLocal(stagePoint).y); //300
var localPoint:Point = new Point(e.localX, e.localY);
trace(localPoint.x); //150
trace(localPoint.y); //150
trace(stage.localToGlobal(localPoint).x); //150
trace(stage.localToGlobal(localPoint).y); //150
trace(smallShape.localToGlobal(localPoint).x); //350
trace(smallShape.localToGlobal(localPoint).y); //350
trace(bigShape.localToGlobal(localPoint).x); //200
trace(bigShape.localToGlobal(localPoint).y); //200
}
通过测试结果可见,globalToLocal方法把同一个全局坐标(350,350)由谁来调用就是转换给谁的local坐标。localToGlobal方法略微复杂一点,由谁来调用localToGlobal就相当于在localPoint(150,150)的基础上加上调用者在舞台的坐标。
理解了这2个方法的运作方式后,假设我们点击B方块某位置要将其转换为A方块的坐标就很简单了:
private function onClickHandler(e:MouseEvent):void
{
var localPoint:Point = new Point(e.localX, e.localY);
var stagePoint:Point = smallShape.localToGlobal(localPoint);//因为点击的位置在B方块内,所以由B调用
localPoint = bigShape.globalToLocal(stagePoint);//点击处在A方块的坐标
}

AS3全局与局部坐标转换的更多相关文章
- JNDI在server.xml中的配置(全局和局部的)
总结: 全局就是在数据源server.xml中配置,然后通过和项目名相同的xml来进行映射.对所有的项目都起作用.那个项目需要就在对应的tomcat下配置一个与项目名相同的xml映射文件. 局部的就是 ...
- js 函数 作用域 全局作用域 局部作用域 闭包
一个变量没有声明但调用 直接报错,声明没有赋值会显示未定义. 作用域 作用域(scope):一条数据可以在哪个范围中使用. 通常来说,一段程序代码中所用到的数据并不总是有效/可用的,而限定这个数据的可 ...
- vue教程3-03 vue组件,定义全局、局部组件,配合模板,动态组件
vue教程3-03 vue组件,定义全局.局部组件,配合模板,动态组件 一.定义一个组件 定义一个组件: 1. 全局组件 var Aaa=Vue.extend({ template:'<h3&g ...
- [ python ] 全局和局部作用域变量的引用
全局与局部变量的引用 (a)locals(b)globals 这里还需要在补充2个关键字一起比较学习,关键字:(c)nonlocal(d)global locals 和 globals locals: ...
- django迁移:全局、局部
django迁移:全局.局部 django 数据库迁移(migrate)应该知道的一些事 https://blog.csdn.net/stonesola/article/details/6975861 ...
- Django---FORM组件.FORM组件的字段,FORM组件校验流程,FORM组件的全局和局部钩子,FORM和Model的组合
Django---FORM组件.FORM组件的字段,FORM组件校验流程,FORM组件的全局和局部钩子,FORM和Model的组合 一丶FORM的介绍 1.生成页面可用的HTML标签 2.对用户提交的 ...
- 转:如何正确彻底删除webpack 全局或是局部?
原文链接:如何正确彻底删除webpack 全局或是局部? 就需要卸载cli 配置webpack ,提示需要安装 webpack-cli,选择yes 后安装webpack-cli , 可是问题不断,所以 ...
- vue-learning:13 - js - vue作用域概念:全局和局部
目录 全局作用域:Vue对象 全局api 局部作用域: 实例对象vm 实例api 组件component 组件配置选项 在引入Vue文件时,就相当于拥有了一个全局Vue对象. 在var vm = ne ...
- Android进阶笔记16:ListView篇之ListView刷新显示(全局 和 局部)
一.ListView内容变化后,动态刷新的步骤(全局刷新): (1)更新适配器Adapter数据源:(不要使用匿名内部类) (2)调用适配器Adapter的刷新方法notifyDataSetChang ...
随机推荐
- html2canvaces用法,js截屏并且下载
1.首先自己下载引入html2canvaces和jquery(我的demo路径是自己本地的) 2.点击截屏按钮后,跳出层的其他部分是取消保存,点击截取获得的图片区域,表示保存 <!DOCTYPE ...
- 亚马逊如何变成 SOA(面向服务的架构)?
阮一峰 日期: 2016年9月10日 上一篇文章,我摘录了<程序员的呐喊>.这本书有趣的内容太多,今天再摘录一段. 1. 亚马逊公司不仅是世界最大的网络书店,还是世界最大的云服务商.它是怎 ...
- ios--时间格式化(cell业务逻辑处理)
一.点击更多按钮 1.项目需求 点击更多按钮,从底部弹出一个框 2.怎么从底部弹出一个框? 两种方法: 一种用 UIActionShee ...
- cookie的三种操作方法
1,jquery.cookie.js 这一篇文章已经写的很详细了: http://www.cnblogs.com/afuge/archive/2013/07/03/3169048.html 2,原生j ...
- Nginx安装注意事项
因为nginx需要依赖pcre库.zlib库.openssl库,所以需要下载这三个库以及nginx源码. 下载以上文件到/usr/local/src/目录下 使用tar -zxvf ...
- Entity Framework CodeFirst commands
TOPIC about_EntityFramework SHORT DESCRIPTION Provides information about Entity Framework commands. ...
- 0512 Scrum 4.0
看板设计 每日例会时间定于下午放学回到宿舍,地点是在宿舍外的走廊或宿舍里,特殊情况待定: 团队开会照片 任务认领: 首页设计-------王俊杰 鸡汤版面-------列志华 论“汤”版面------ ...
- Azure sdk for python
http://www.oschina.net/translate/python-windows-azure Len 6:17:54 PM __author__ = 'len.li' from azu ...
- sysobjects中字段的含义
--列名 数据类型 描述 name sysname --对象名. Id int --对象标识号. xtype ) --对象类型.可以是下列对象类型中的一种: C = CHECK --约束 D = -- ...
- js子窗体、父窗体方法互调
var childWindow = $("#editFrame")[0].contentWindow;//获取子窗体的window对象. childWindow.subForm() ...