实际项目中,我们经常会用两个手指对一个看到的显示对象进行放大和缩小的操作,平面2D所涉及到的便是改变这个显示对象的scaleX和scaleY属性。

一个显示对象再不做任何拉伸的情况下,显示对象默认的Scale为1,锚点偏移坐标的X和Y都为0。


虽然显示对象并没有发生位移,坐标未做任何更改,但是由于锚点偏移坐标发生了变化,此时的锚点偏移坐标X和Y都为100,导致视觉上也同时发生了变化,此时我们需要做的便是相应调整显示对象的坐标,让其回到我们所认为合适的视觉效果。

回到主题,两个手指对一个看到的显示对象进行放大和缩小的操作,其实正是锚点偏移坐标发生变化同时scale也发生了变化,这种情况更复杂一点儿,需要我们将缩放比例同时融入到算法当中去,完整示例代码如下。

class DragPanel extends eui.UILayer {public constructor() {super();this.once(egret.Event.ADDED_TO_STAGE, this.AddToStage,this)}private sc:number = 1;private AddToStage(evt:egret.Event):void{  this.scaleX = this.scaleY = this.sc;let result = new egret.Bitmap();let texture: egret.Texture = RES.getRes("bg_jpg");result.texture = texture;let sky = result;this.addChild(sky);console.log("Scale******" + this.sc);console.log("anchorOffsetX******" + this.anchorOffsetX + "," + "anchorOffsetY******" + this.anchorOffsetY);this.stage.addEventListener(egret.TouchEvent.TOUCH_BEGIN, this.mouseDown, this);this.stage.addEventListener(egret.TouchEvent.TOUCH_END, this.mouseUp, this);this.stage.addEventListener(egret.TouchEvent.TOUCH_MOVE, this.mouseMove, this);}private shape:egret.Shape;private mouseDown(evt:egret.TouchEvent){if(this.shape && this.shape.parent){this.shape.graphics.clear();this.shape.parent.removeChild(this.shape);this.shape = null;}let offsetX = this.anchorOffsetX*this.sc - this.x;let offsetY = this.anchorOffsetY*this.sc - this.y;this.anchorOffsetX = (evt.stageX + offsetX)/ this.sc;this.anchorOffsetY = (evt.stageY + offsetY)/ this.sc;this.shape  = new egret.Shape();this.shape.graphics.beginFill(0xff0000);this.shape.graphics.drawRect(this.anchorOffsetX, this.anchorOffsetY, 10, 10);this.shape.graphics.endFill();this.addChild(this.shape); this.x = this.anchorOffsetX*this.sc - offsetX;this.y = this.anchorOffsetY*this.sc - offsetY;}private mouseMove(evt:egret.TouchEvent){}private mouseUp(evt:egret.TouchEvent){}}

其中的私有变量sc,可以任意设置0-1的任何值,以达到改变Scale模拟拉伸的效果。

Egret实现显示对象放大缩小(Scale改变)锚点坐标(anchorOffset)对应改变相关推荐

  1. Qt 显示图片 放大 缩小 移动

    本文章原创于www.yafeilinux.com 转载请注明出处. 现在我们来实现在窗口上显示图片,并学习怎样将图片进行平移,缩放,旋转和扭曲.这里我们是利用QPixmap类来实现图片显示的. 一.利 ...

  2. 超大超长图片居中显示且放大缩小无影响

    1. 超大图片居中显示 1.1 放大缩小都居中显示 <!DOCTYPE html> <html lang="en"> <head> <me ...

  3. 全屏背景半透明对话框用PhotoView显示图片放大缩小图片

    需求:在当前页面悬浮显示图片,背景位透明色. 废话不多说,直接上代码. 先引入两个库,很常见的啦~~ compile 'com.github.chrisbanes.photoview:library: ...

  4. Vue+Openlayers显示TileWMS时不显示默认控件放大缩小旋转等组件

    场景 Vue中使用Openlayers加载Geoserver发布的TileWMS: Vue中使用Openlayers加载Geoserver发布的TileWMS_霸道流氓气质的博客-CSDN博客 在上面 ...

  5. as3学习第二课 显示对象和显示列表

    关于显示对象 原文地址:as3学习第二课   显示对象和显示列表 作者:冰剑蓝影 一.显示对象    显示对象就是可以在舞台上显示的对象.包括直接看到的对象,如图形.文字.图片.视频.还有看不到但又真 ...

  6. android image对象改变,【Android学习】动态放大缩小ImageView里的图片,运用Matrix对象来....

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* 设置图片缩小的比例 */ double scale=0.8; /* 计算出这次要缩小的比例 */ scaleWidth=(float) (scale ...

  7. Unity中常用的单例模式、对象池的脚本模板,连按退出和滑动翻页或放大缩小的功能实现,以及属性在代码中的灵活使用

    1.单例模式的脚本模板: Unity中针对一些常用的manager可以使用单例模式,用于统一的功能管理: //普通单例,不需要继承MonoBehavior,不用挂载在GameObject上 publi ...

  8. QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)

    作为新手小白的一些分享....... 其中一部分功能要求显示多张图片,如果图片总高度超过工具窗口的高度就要有滚动条出现,实现滚屏的效果,网上这部分内容少之又少,我就把效果和代码都贴出来供大家参考. 想 ...

  9. 如何使QGraphicsItem不随QGraphicsView放大缩小而改变大小

    一.简述 在使用QGraphicsView过程中,有时候我们需要对view进行缩放,但是对于一般正常的加入view中的item都会随着view的大小变化而变化,但是如果我们想让某些item不随view ...

最新文章

  1. 码云nacos下载_nacos安装,配置以及持久化
  2. 关于单CPU,多CPU上的原子操作
  3. iframe 父窗口和子窗口相互的调用方法集锦
  4. 关于C++14:你需要知道的新特性
  5. TF之LoR:基于tensorflow利用逻辑回归算LoR法实现手写数字图片识别提高准确率
  6. linux下搭建cacti监控
  7. foreach是同步还是异步JAVA,Java中foreach与正常for循环效率对比
  8. python实现多表格合并_python 如何把两个表格数据,合并为一个呢?
  9. python算法应用(七)——搜索与排名3(点击跟踪网络的设计)
  10. 【Elasticsearch】Elasticsearch 最佳实践系列之分片恢复并发故障
  11. iOS 又出重大Bug!一秒搞崩 iPhone 的网络连接功能
  12. IDA远程调试Android中so文件
  13. 计算机c语言报告册,计算机c语言实验报告.docx
  14. (CODE)计算机视觉引论及数字成像系统
  15. 运筹学 美国人在计算机上实现的四,运筹学试卷及答案
  16. 使用OBS做无延时/低延迟直播(实测)
  17. win7 win8 64位系统上装CAD2008挂燕秀外挂的办法
  18. elementUI Cascader 级联选择器 拼音模糊搜索
  19. ps图片去水印-ps图片去水印教程
  20. oracle中的start with

热门文章

  1. 大合集!互联网行业常用数据分析指标
  2. CentOS 7上编译安装PHP 8.1及Nginx 配置支持PHP
  3. python绘制太阳系_如何利用Python动态模拟太阳系运转
  4. [网友问答1]STM32驱动PCF8591模块,实现AD/DA转换
  5. [渝粤教育] 西南科技大学 法律文书写作 在线考试复习资料
  6. [SRv6] [华为] EVPN VPLS over SRv6实验
  7. 烟花代码运行示例(C++,easyX)
  8. Flink 去除重复数据 重复数据处理
  9. 软件测试Linux面试题:删除temp.conf文件
  10. 独立博客怎样申请谷歌Adsense