好的,所以我一直试图让这个概念现在正常运作,并且没有运气。我对数学不太满意,所以任何帮助都会受到赞赏。我试图从它的中心旋转一个居中的容器。这段代码的问题是当我使用rotatePicture方法时,它不会从中心旋转,而是从盒子的左上角旋转。这是代码......
import mx.effects.Rotate;
private function init():void
{
calculateCoordinates();
}
private function rotateBox():void
{
var m:Matrix = myBox.transform.matrix;
var centerX:Number = myBox.width / 2;
var centerY:Number = myBox.height / 2;
var centerPoint:Point = new Point(centerX, centerY);
var transformPoint:Point= m.transformPoint(centerPoint);
m.translate(-transformPoint.x, -transformPoint.y);
m.rotate(90 * Math.PI / 180);
m.translate(transformPoint.x, transformPoint.y);
myBox.transform.matrix = m;
this.callLater(calculateCoordinates);
//calculateCoordinates();
}
private function calculateCoordinates():void
{
var x : Number = (myBox.parent.width - myBox.width) / 2;
x = x < 0 ? 0 : x;
var y : Number = (myBox.parent.height - myBox.height) / 2;
y = y < 0 ? 0 : y;
myBox.move(x, y);
}
答案 0 :(得分:1)
好的,这有点棘手,我正在制定一些细节,但如果有人有类似的问题,我找到了一般答案。刚刚拍完电影让大脑恢复活力......
我必须为画布旋转了多少转而放置一个变量,这很容易,因为我将度数限制为仅90.然后我放置一个switch语句,测试turn变量并重新计算(x,y)基于转弯的坐标。因为我知道Rotate类会产生更酷的效果并以相同的结果结束,所以我最终使用了它。
干杯!
答案 1 :(得分:1)
就个人而言,我将容器包装在另一个精灵中,将其定位,使其中心位于(0,0)精灵坐标空间中,然后旋转精灵...它简单而强大...... < / p>
答案 2 :(得分:1)
我不知道你的背景是什么,但根据我的经验,这是一个“超越自我”的经典案例。
你已经写了很多代码来做一些Flash显示API的原生代码。
由于您似乎正在使用Flex,我只是告诉您,实现此目的的简单方法是动态重新定位显示剪辑内容,以使内容的中心位于剪辑的0,0点。 / p>
你拥有的内容越多越难,但是如果你只有像图像或按钮或者你有什么东西,那么只计算高度和宽度,然后除以2并减去。
然后旋转属性就可以了。
在Flash中它更容易,因为您可以创建一个新剪辑,将您的类绑定到剪辑,并将您的所有内容放在Flash创作工具中,以便轮换以正常工作。
是的,Back2Dos说的是什么。
答案 3 :(得分:0)
我想使用&lt; s:Rotate&gt;旋转中心。希望对你有用。