图像在Flex中旋转3D,但在此图像的背面显示另一个图像?

时间:2011-10-24 04:40:21

标签: flex 3d rotation effect

我想在Flex中旋转3D一个名为img1的图像。我想绕y轴旋转180度。我可以通过使用已经内置在Flex中的3D效果来实现这一点,但我想做更多不同。

我想在旋转过程中,在img1的背面会出现另一个名为img2的图像(在默认情况下,图像显示在背面是img1),旋转完成时,图像将是img2。

我该怎么做?

谢谢。

2 个答案:

答案 0 :(得分:0)

如果你不需要透视效果,那很容易做到。一个粗略的实现(未经过测试!):

// Event.ENTER_FRAME event listener
void on_enter_frame(event:Event):void
{
   // m_angle is a member of the class/flex component where on_enter_frame is declared
   // ANGLE_DELTA is just a constant
   m_angle += ANGLE_DELTA;
   // Angle clamping to the range [0, PI * 2)
   m_angle %= Math.PI * 2;
   if (m_angle < 0)
      m_angle += Math.PI * 2;

   // If we currently look at the front side...
   if (m_angle < Math.PI)
   {
      img1.visible = true;
      img2.visible = false;
      img1.scaleX = Math.cos(m_angle);
   }
   else
   {
      img1.visible = false;
      img2.visible = true;
      // If you omit negation, the back-side image will be mirrored
      img2.scaleX = -Math.cos(m_angle);
   } 
}

因此每一帧我们都会增加旋转角度,将其钳制到[0,PI * 2]范围内。然后,根据旋转角度的值,我们隐藏/显示您的图像对,然后对可见图像执行x缩放。

答案 1 :(得分:0)

谢谢,现在我找到了解决方案。请在这里查看,这很容易。

http://forums.adobe.com/thread/921258