2014-12-23 41 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