我正在使用 matrix.rotate 方法来旋转矩形(在我的例子中是盒子)。我的旋转事件如下所示
公共函数transformObject(transformEvent:TransformEvent):无效{
var numChildrn:int = _markedObjectLayer.numChildren;
var tempMatrix: Matrix = null;
var tempx:Number;
var tempy:Number;
var tempHeight:Number;
var tempWidth:Number;
for(var i:int = 0; i < numChildrn; i++){
var chld:MarkedObject = ObjectLayer.getChildAt(i)
if (chld.selected){
var height:int = (BoxObject) chld.height;
var width:int = (BoxObject) chld.width;
tempMatrix = chld.transform.matrix;
tempHeight=height;
tempWidth=width;
tempMatrix = MatrixTransformer.transform(tempMatrix,transformEvent.angle);
tempMatrix.tx=tempx;
tempMatrix.ty=tempy
chld.transform.matrix = tempMatrix;
}
}
invalidateDisplayList();
}
}
Matrix.transform 方法调用 matrix.rotate 方法
公共静态函数变换(源矩阵:矩阵,旋转:数字= 0):矩阵{
sourceMatrix = MatrixTransformer.rotate(sourceMatrix, rotation, "degrees");
return sourceMatrix;
}
/**
* Rotates a matrix and returns the result. The unit parameter lets the user specify "degrees",
* "gradients", or "radians".
*/
public static function rotate(sourceMatrix:Matrix, angle:Number, unit:String = "radians"):Matrix {
if (unit == "degrees")
{
angle = Math.PI * 2 *( angle / 360);
}
sourceMatrix. rotate(angle)
return sourceMatrix;
}
问题是 x 和 y 是盒子的左去核器,因此它围绕左角旋转。但是,如果我尝试将 temp.x 和 temp.y 作为质心值,它不会围绕质心旋转?
谁能建议我在这里做错了什么?
谢谢阿克谢