在我的Flash程序中,我有一个步骤,我想围绕其容器的中心旋转displayObject。 正如你们中的一些人可能知道的那样,Flash有一个默认的旋转中心点,即左上角,并不适合我的情况。 为了实现我的特定旋转,我使用矩阵进行3次连续变换,如下所示:
public function rotateAroundCenter(object:DisplayObject, container:DisplayObject, angleDegrees:Number):void {
var matrix:Matrix = object.transform.matrix;
var rect:Rectangle = object.getBounds(container);
matrix.translate(-(rect.left + (rect.width / 2)), -(rect.top + (rect.height / 2)));
matrix.rotate((angleDegrees / 180) * Math.PI);
matrix.translate(rect.left + (rect.width / 2), rect.top + (rect.height / 2));
object.transform.matrix = matrix;
}
这段代码可以解决这个问题,我可以像我想的那样在他们的容器中心周围旋转displayObjects。
问题:对于其中一些对象(无法在工作人员和不工作人员之间找到歧视因素),每当我尝试应用 时180度旋转 使用前面的代码将它们颠倒过来,Flash卸载了SWF,这对我来说非常像一次崩溃。我只是为这些对象中的某些对象造成了这次崩溃,但是如果它们一旦崩溃就会崩溃我使用我的函数应用180度旋转。
我怀疑内存泄漏,但是,如果90或270度旋转工作,为什么这个特定情况会导致整个程序崩溃?
非常感谢有关此问题的任何线索。谢谢!