1

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

4

2 回答 2

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}));        
于 2012-06-11T08:08:19.067 回答
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
于 2012-06-11T09:46:30.647 回答