使用scale拉伸之后的坐标问题

2024-05-04 18:08

本文主要是介绍使用scale拉伸之后的坐标问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近发现论坛多了很多新来的朋友,于是决定发一些平时编程时用到的小技巧赚一些银两。

有时候在业务需求中,我们需要处理一些显示对象的拉伸变形、本地坐标和全局坐标转换等问题,这些都是不难但是很容易出错的地方,例如下面一些情况:

A. 你要查询影片剪辑A默认的宽高,却忘记曾今修改过A的scaleX或者scaleY属性,导致问题出现。所以这时候你要这样计算。

  1. width = a.width/a.scaleX;height = a.height/a.scaleY;
复制代码

B. 影片剪辑A中包含影片剪辑B,你需要查询B的全局坐标以及B在屏幕上显示出来的宽高。但是A却有可能进行各种拉伸变形,不管A如何拉伸变形,A内部的坐标系是不会改变的。所以你可能不得不用localToGlobal函数和一系列的数学运算进行转换计算。

像前面说的问题以及通常情况下大部分的拉伸变形运算,灵活使用getRect函数都能够解决。

getRect () 方法 
public function getRect(targetCoordinateSpace isplayObject):Rectangle
语言版本:  ActionScript 3.0 
运行时版本:  Flash Player 9, AIR 1.0 

返回一个矩形,该矩形根据 targetCoordinateSpace 参数定义的坐标系定义显示对象的边界,但不包括形状上的任何笔触。getRect() 方法返回的值等于或小于由 getBounds() 方法返回的值。 

请注意:使用 localToGlobal() 和 globalToLocal() 方法可以分别将显示对象的本地坐标转换为舞台坐标,或将舞台坐标转换为本地坐标。

参数: targetCoordinateSpace isplayObject — 定义要使用的坐标系的显示对象。  

返回: Rectangle — 定义与 targetCoordinateSpace 对象坐标系统相关的显示对象面积的矩形。  



getRect()函数返回的是一个不常见的类型Rectangle,它包含x,y,widht,height四个属性,分别表示x坐标、y坐标、宽度、高度。很少使用getRect函数的人肯定会很奇怪,这些属性不都是可以直接从显示对象的属性取到么嘛,为什么还需要专门设置一个函数来返回这些属性呢?
其中的奥妙就在于getRect函数的参数targetCoordinateSpace,简单来说getRect函数返回的Rectangle中的属性都是相对于这个显示对象而言的。
当你把舞台作为参数传入的时候,得到的就是全局坐标和变形后的宽高,而不用管它在容器中嵌套的多深;
当你把自身作为参数传入的时候,得到的就是本地坐标和原始的宽高;
当你把另一个没有嵌套关系的显示对象作为参数传入的时候,得到的就是相对坐标和变形后的宽高。
当然其还有很多用途等待你的发现,我这里就不一一例举的。所以你会发现,这个函数为你做了大部分的坐标转换以及拉伸变形等计算,不用你绞尽脑汁的去苦恼了。

这篇关于使用scale拉伸之后的坐标问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959797

相关文章

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.