as3,旋转图像然后相对于中心移动x和y

时间:2011-02-21 21:45:24

标签: flash actionscript-3

我正在完成一个可以上传图像和颜色的设计应用程序。我使用greensock转换管理器。我正在接受用户所做的任何事情并将其记录下来以便我可以在幕后重建他们所做的更大规模(出口用于打印目的)

我遇到的问题是旋转和移动x和y值。变换管理器执行与中心点相关的所有操作,但是当我重新创建图像对象时,注册点位于左上角。我已经找到了如何使用变换矩阵围绕对象的中心旋转,但我似乎无法正确移动x和y,因为旋转时这些值会发生变化。我想将图像相对于中心向左或向右移动。我怎么能这样做呢。

以下是我的旋转方式。

private function rotateAroundCenter (ob:*, angleDegrees:Number, ptRotationPoint:Point) {
      var m:Matrix=ob.transform.matrix;
      m.tx -= ptRotationPoint.x;
      m.ty -= ptRotationPoint.y;
      m.rotate (angleDegrees*(Math.PI/180));
      m.tx += ptRotationPoint.x;
      m.ty += ptRotationPoint.y;
      ob.transform.matrix=m;
 }

编辑: 当我改变项目时,这是一些更多的代码(这是在我根据下面的第一条评论改变了一些东西之后。(_j2sratio是我正在调整所有内容以进行打印)。

var newUI:MovieClip = new MovieClip();
var bmapHolder:MovieClip = new MovieClip();
bmapHolder.addChild(bmap);
bmapHolder.x = -bmapHolder.width/2;
bmapHolder.y = -bmapHolder.height/2;
newUI.addChild(bmapHolder);
newUI.width = $value.twidth * _j2sRatio;
newUI.height = $value.theight * _j2sRatio;
newUI.rotation = $value.rotation;
bmapHolder.scaleX = $value.scaleX * _newScale;
bmapHolder.scaleY = $value.scaleY * _newScale;
newUI.x = $value.positionX * _j2sRatio;
newUI.y = $value.positionY * _j2sRatio;

1 个答案:

答案 0 :(得分:0)

为什么你没有应用转换的精灵/ movieClip,并且-width/2-height/2 xy的位图位置偏移{{1}}和{{1}}分别?