在中心周围旋转一个正方形

时间:2012-06-10 23:43:28

标签: actionscript-3 flash actionscript rotation vanishing-point

我在Sprite中有3个正方形(50 px x 50 px),彼此相邻。每个的枢轴都是0,0。 第1个方格X,Y:0,0 第二个方格X,Y:50,0 第3个方格X,Y:100,0 我想围绕它的中心线旋转每个方格。我似乎无法弄清楚如何设置消失点,以便所有方块围绕它们各自的点旋转,而不是围绕同一点旋转所有方块。 任何帮助非常感谢!

2 个答案:

答案 0 :(得分:1)

基本上,您需要在旋转框时移动框以获得该效果。由于你也知道盒子的宽度/高度和枢轴点位置,因此计算并不那么难。

但是,为什么要自己计算呢?使用TweenLite,您可以使用TransformAroundCenterPlugin来处理转换。我建议使用它。如果您不想补间它,请将补间持续时间(第二个参数)设置为0

// Activate plugin (should be called once)
TweenPlugin.activate([TransformAroundPointPlugin]);

// Transform your boxes around it's center, does not use the pivot point.
TweenLite.to(this.mcBox1, 1, new TweenLiteVars().transformAroundCenter({rotationX: 50}));
TweenLite.to(this.mcBox2, 1, new TweenLiteVars().transformAroundCenter({rotationX: 190}));
TweenLite.to(this.mcBox3, 0, new TweenLiteVars().transformAroundCenter({rotationX: 5}));        

答案 1 :(得分:1)

您可以通过旋转并将它们转换为较新的位置来旋转子动画片段。要求子动画片段的轴心与其注册点重合

在下面的代码中,持有者是你的精灵,内容是正方形。 (要求方块具有枢轴,与配准点重合)

PS:持有人的宽度和高度必须大于内容的宽度和高度。假设这里的持有人是某种大容器(比如舞台)。

var holder_Mc:MovieClip = holder_Mc
var content_Mc:MovieClip  = holder_Mc.content_Mc ;
var rotation_val_num:Number = 50// in degrees

        var bnd = holder_Mc.getBounds(MovieClip(holder_Mc.parent)) ;
        var cw:Number = bnd.width ;
        var ch:Number = bnd.height;

        var cx:Number = bnd.x ; 
        var cy:Number = bnd.y ; 
            content_Mc.rotation = rotation_val_num ;


            var bnd2 = holder_Mc.getBounds(MovieClip(holder_Mc.parent)) ;
            var cw2 = bnd2.width ;
            var ch2 = bnd2.height;

            var cx2 = bnd2.x ; 
            var cy2 = bnd2.y ; 



            var dx = Math.abs( holder_Mc.x - cx2 ) ;
            var dy = Math.abs( holder_Mc.y - cy2) ;

            holder_Mc.x  = cx + cw/2 + dx - cw2/2
            holder_Mc.y  = cy + ch/2 + dy - ch2/2