2014-12-23 40 views
0

我正在使用Flash AS3。 如果我有一组变换数据(X,Y,将scaleX,的scaleY,如果skewX,skewY),我可以将其转换矩阵:如何将2D矩阵转换为变换

matrix.a = transform.scaleX * Math.cos(transform.skewY) 
matrix.b = transform.scaleX * Math.sin(transform.skewY) 
matrix.c = -transform.scaleY * Math.sin(transform.skewX); 
matrix.d = transform.scaleY * Math.cos(transform.skewX); 
matrix.tx = transform.x; 
matrix.ty = transform.y; 

我的问题是,现在我有一个矩阵,我怎么才能把它转换改造?有没有lib或框架提供这样的功能?

+0

另一个问题是:我有两个2D具有变换的显示对象(x,y,scaleX,scaleY,skewX,skewY)。一个DisplayObject是另一个的孩子。如何计算与全局相关的子DisplayObject的转换? 从另一面。我想计算变换concat(乘法)。 谢谢! –

+0

从阅读转换文档,我怀疑你的第二个问题的答案可能是[Transform :: getRelativeMatrix3D](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/的geom/Transform.html#getRelativeMatrix3D())。如果您需要更多信息,我建议发布第二个单独的问题。 –

回答

0

documentation上变换对象:

To apply two-dimensional transformations: create a Matrix object, set the matrix's two-dimensional transformation, and then assign the transform.matrix property of the display object to the new Matrix object.

所以编辑对象的现有转换矩阵应该是这个样子的过程:

var newMatrix:Matrix = aDisplayObject.transform.matrix 
newMatrix.a = 123 
aDisplayObject.transform.matrix = newMatrix