Apache flex 旋转中心内容

Apache flex 旋转中心内容,apache-flex,flash,actionscript-3,Apache Flex,Flash,Actionscript 3,好吧,我一直在努力让这个概念在今天起作用,但我没有运气。我的数学不太好,所以任何帮助都将不胜感激。我试图从中心旋转一个居中的容器。这段代码的问题是,当我使用rotatePicture方法时,它不会从中心旋转,而是从长方体的左上角旋转。这是密码 import mx.effects.Rotate; private function init():void { calculateCoordinates(); } private functio

好吧,我一直在努力让这个概念在今天起作用,但我没有运气。我的数学不太好,所以任何帮助都将不胜感激。我试图从中心旋转一个居中的容器。这段代码的问题是,当我使用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);
    }
导入mx.effects.Rotate;
私有函数init():void
{
计算坐标();
}
私有函数rotateBox():void
{
var m:Matrix=myBox.transform.Matrix;
var centerX:Number=myBox.width/2;
变量centerY:Number=myBox.height/2;
变量中心点:点=新点(中心X、中心Y);
变量转换点:点=m.transformPoint(中心点);
m、 平移(-transformPoint.x,-transformPoint.y);
m、 旋转(90*Math.PI/180);
m、 平移(transformPoint.x,transformPoint.y);
myBox.transform.matrix=m;
此.callLater(计算坐标);
//计算坐标();
}
专用函数calculateCoordinates():void
{
变量x:Number=(myBox.parent.width-myBox.width)/2;
x=x<0?0:x;
变量y:Number=(myBox.parent.height-myBox.height)/2;
y=y<0?0:y;
myBox.move(x,y);
}

好的,这有点棘手,我正在研究一些细节,但如果有人有类似的问题,我找到了一般的答案。只是休息一下看电影让大脑清醒一下

我必须为画布旋转了多少圈设置一个变量,这很容易,因为我将角度限制为90度。然后我放入一个switch语句,该语句测试了turns变量,并重新计算了(x,y)坐标。因为我知道Rotate类将创建一个更酷的效果,并以相同的结果结束,所以我最终使用了它


干杯

好吧,这有点棘手,我正在研究一些细节,但如果有人有类似的问题,我找到了一般的答案。只是休息一下看电影让大脑清醒一下

我必须为画布旋转了多少圈设置一个变量,这很容易,因为我将角度限制为90度。然后我放入一个switch语句,该语句测试了turns变量,并重新计算了(x,y)坐标。因为我知道Rotate类将创建一个更酷的效果,并以相同的结果结束,所以我最终使用了它


干杯

就我个人而言,我会将容器包装在另一个精灵中,使其中心位于精灵坐标空间中的(0,0),然后旋转精灵。。。它简单而健壮…

就我个人而言,我会将容器包装在另一个精灵中,将其放置在精灵坐标空间中,使其中心位于(0,0),然后旋转精灵。。。它简单而健壮…

我不知道你的背景是什么,但根据我的经验,这是一个典型的“超越自我”的例子

您已经编写了相当多的代码来执行Flash display API的本机操作

因为您似乎在使用Flex,所以我要告诉您,实现这一点的简单方法是动态地重新定位显示剪辑内容,使内容的中心位于剪辑的0,0点

你拥有的内容越多,这就越困难,但是如果你只拥有一个图像或按钮之类的东西,那么只需计算高度和宽度,然后除以2再减去就很容易了

然后旋转属性就可以正常工作了

在Flash中,这更容易,因为您只需制作一个新剪辑,将类绑定到剪辑,并将所有内容放置在Flash创作工具中,以便按照预期旋转


是的,Back2Dos说了什么。

我不知道你的背景是什么,但根据我的经验,这是一个典型的“超越自我”的例子

您已经编写了相当多的代码来执行Flash display API的本机操作

因为您似乎在使用Flex,所以我要告诉您,实现这一点的简单方法是动态地重新定位显示剪辑内容,使内容的中心位于剪辑的0,0点

你拥有的内容越多,这就越困难,但是如果你只拥有一个图像或按钮之类的东西,那么只需计算高度和宽度,然后除以2再减去就很容易了

然后旋转属性就可以正常工作了

在Flash中,这更容易,因为您只需制作一个新剪辑,将类绑定到剪辑,并将所有内容放置在Flash创作工具中,以便按照预期旋转


是的,就像Back2Dos说的。

我想用它来旋转中心。希望对您有用。

我想用它来旋转中心。希望对您有用。

如果坐标从左上角开始,方框的中心是否为正x和负y?您是否尝试过将centerY变量设置为负值?如果坐标从左上角开始,框的中心是否为正x和负y?您是否尝试过将centerY变量设置为负值?已批准!虽然我不知道我是怎么想的任意创建包装精灵的一切。我宁愿做内部计算,但这一切都取决于AppAppApproved的规模!虽然我不知道我是怎么想的任意创建包装精灵的一切。我更愿意做内部计算,但这一切都取决于appI的规模。实际上,我有一个工作样本,但问题是当我动态缩放以中心为中心的内容时。我发现(x,y)坐标也在旋转,而不是重新计算屏幕左上角最近的点。所以当我旋转的时候