Actionscript 3 矩阵旋转后的闪光崩溃
在我的Flash程序中,我有一个步骤,我想绕着它的容器中心旋转一个displayObject。 正如你们中的一些人可能知道的,Flash有一个默认的旋转中心点,即左上角,不适合我的情况。 为了实现特定旋转,我使用矩阵进行了3次连续变换,如下所示:Actionscript 3 矩阵旋转后的闪光崩溃,actionscript-3,flash,matrix,Actionscript 3,Flash,Matrix,在我的Flash程序中,我有一个步骤,我想绕着它的容器中心旋转一个displayObject。 正如你们中的一些人可能知道的,Flash有一个默认的旋转中心点,即左上角,不适合我的情况。 为了实现特定旋转,我使用矩阵进行了3次连续变换,如下所示: public function rotateAroundCenter(object:DisplayObject, container:DisplayObject, angleDegrees:Number):void {
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
问题:对于其中一些对象(无法找到工作对象和不工作对象之间的区别因素),每当我尝试使用前面的代码将它们倒置时,Flash会卸载SWF,这对我来说非常像崩溃。我只对这些对象中的一些对象进行了此崩溃,但如果它们在任何时候崩溃后崩溃,我将使用我的函数应用180度旋转 我怀疑内存泄漏,但是,如果90度或270度旋转有效,为什么这个特定的情况会使我的整个程序崩溃
任何关于这个问题的线索都将不胜感激。谢谢 Flash卸载SWF是什么意思?到底发生了什么?在Flash Builder调试控制台中,我收到一条消息,说SWF已卸载,我在浏览器中打开的应用程序此时停止:无法再与它交互。“我只收到其中一些对象的此崩溃…”,可以给我们提供有关您的对象的更多详细信息吗?您是否在浏览器上尝试了flash player的调试版本以获得触发的错误(如果有),我认为这是一个错误,这就是为什么您的swf没有响应的原因?我没有提供有关对象性质的详细信息,因为它们是自定义IIPImage查看器的实例,所以这非常具体。我使用这些查看器显示从服务器加载的JPEG2000图像。在本例中,我将这些查看器放在容器中,并按照问题中的说明旋转容器本身。我使用的是Flash调试版本,我可以补充一点,try/catch组合不会告诉我关于崩溃的任何信息,也不会阻止它…你能列出一些rect的值吗?是否存在以下对象:1)非常大,2)零宽度/高度,或3)源自负坐标空间?