マトリックスが最初に取得されます。
this.getMatrix = function(obj)
{
var matrix = obj.css("-webkit-transform") ||
obj.css("-moz-transform") ||
obj.css("-ms-transform") ||
obj.css("-o-transform") ||
obj.css("transform");
return matrix;
};
そして、スケールの値が取得されます。
this.getScaleDegrees = function(obj)
{
var matrix = this.getMatrix(obj),
matrixRegex = /matrix\((-?\d*\.?\d+),\s*0,\s*0,\s*(-?\d*\.?\d+),\s*0,\s*0\)/,
matches = matrix.match(matrixRegex);
return matches;
};
そして、回転の値が取得されます。
this.getRotationDegrees = function(obj)
{
var matrix = this.getMatrix(obj),
angle = 0;
if(matrix !== 'none') {
var values = matrix.split('(')[1].split(')')[0].split(','),
a = values[0],
b = values[1];
angle = Math.round(Math.atan2(b, a) * (180/Math.PI));
}
return angle;
};
今、私は問題に直面しています。
要素の回転とスケールの両方がある場合、関数'getScaleDegrees'は失敗しました。
関数「getRotationDegrees」は正常に動作するので、関数「getRotationDegrees」
のプロセスを利用して関数「getScaleDegrees」を編集すると思います。
したがって、問題は、スケールの値を取得する方法です。
良いアイデアや計算方法はありますか?
編集:
目盛りと回転を変える機能があり、目盛りと回転の値は毎回異なります。関数'getMatrix'が返す値はこのようになります。
none [no rotate & no scale]
matrix(1.2, 0, 0, 1.2, 0, 0) [edit scale]
matrix(0.965926, -0.258819, 0.258819, 0.965926, 0, 0) [edit rotate]
matrix(1.3523, -0.362347, 0.362347, 1.3523, 0, 0) [edit rotate & edit scale]