最常见的问题是如何缩放 DisplayObject,答案通常是使用 Matrix。
我的问题是,如何获取矩阵的比例(scaleX 和scaleY)?
有一个 Matrix.scale 方法来设置scaleX和scaleY,但它不返回值,并且不存在其他属性来读回它。
我问的原因是,我使用的对象深埋在显示列表中,并且每个对象都可以进行转换。因此,我使用子对象的 sprite.transform.concatenatedMatrix getter,但此时我陷入了如何从中读取比例的困境。
家里有数学奇才吗?
通常,隔离矩阵中缩放分量的可靠方法是使用相关矩阵沿轴变换单位向量,然后测量所得向量的长度。
例如,给定transform
从 DisplayObject 并使用 Matrix3D,scaleX
将得到如下:
transform.matrix3D.deltaTransformVector(Vector3D.X_AXIS).length
或者,如果您使用级联二维矩阵,则scaleY
将会:
transform.concatenatedMatrix.deltaTransformPoint(new Point(0,1)).length
请注意,deltaTransform*
函数忽略矩阵的平移效应,这对缩放没有影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)