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 ...
随机推荐
- elasticsearch使用操作部分
本片文章记录了elasticsearch概念.特点.集群.插件.API使用方法. 1.elasticsearch的概念及特点.概念:elasticsearch是一个基于lucene的搜索服务器.luc ...
- github 或者gitlab 设置添加SSH, 避免每次提交重复输入用户名
克隆项目二种方式: 1. 使用https url克隆, 复制https url 然后到 git clone https-url 2.使用 SSH url 克隆却需要在克隆之前先配置和添加好 SSH ...
- MVC项目实践,在三层架构下实现SportsStore,从类图看三层架构
在"MVC项目实践,在三层架构下实现SportsStore-02,DbSession层.BLL层"一文的评论中,博友浪花一朵朵建议用类图来理解本项目的三层架构.于是就有了本篇: I ...
- 20145320 《Java程序设计》第5周学习总结
20145320 <Java程序设计>第5周学习总结 教材学习内容总结 8.1 语法与继承架构 try.catch Java中的错误会被包装为对象,而使用try与catch,JVM会执行t ...
- WIN7远程桌面连接方法!
WIN7远程桌面连接方法!
- AppCan接入微信并且进行文字分享
AppCan接入微信并且进行文字分享 接入指引 实现简单的文字分享功能 接入指引 详情请参见:http://newdocx.appcan.cn/index.html?templateId=412 实现 ...
- [转]ASP.NET MVC Json()处理大数据异常解决方法 json maxjsonlength
本文转自:http://blog.csdn.net/blacksource/article/details/18797055 先对项目做个简单介绍: 整个项目采用微软的ASP.NET MVC3进行开发 ...
- 在C#中??和?分别是什么意思?
在C# 6.0中,引入了一个 ?. 的运算符,前面的代码可以改成如下形式: int? firstX = points?.FirstOrDefault()?.X; 从这个例子中我们也可以看出它的基本用法 ...
- wex5 教程 之 图文讲解 后台管理界面设计与技巧
视频教程地址:http://v.youku.com/v_show/id_XMTgwOTAyMTkyMA==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0 ...
- 认真分析mmap:是什么 为什么 怎么用【转】
转自:http://www.cnblogs.com/huxiao-tee/p/4660352.html?utm_source=tuicool&utm_medium=referral 阅读目录 ...