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