在flex如何使用矩阵类创建梯形形状?

时间:2011-07-18 05:46:48

标签: flex actionscript-3 flash-builder

我想在梯形形状中使用图像反射。这就是为什么我问如何用矩阵类

创建梯形形状

1 个答案:

答案 0 :(得分:0)

对于剪切数学原因,您无法使用Matrix类本身实现此目的。

但是,只要您为Flash Player 10或更高版本进行编译,就可以实现您希望实现的效果,即使图像或组件反射看起来像具有3D透视效果。您可以使用Matrix3D类来执行此操作,该类允许您在Flash中影响伪3D变换(投影变换)。

示例

在MXML中:

<mx:Image id="img" source="@Embed('image.jpg')"/>
<mx:Image id="reflection" source="{img.source}"
          creationComplete="reflectImage()"/>

并在脚本块中:

protected function reflectImage():void
{
    var m3D:Matrix3D = new Matrix3D();
    m3D.appendScale(1,-1,-1);  // flip the image
    m3D.appendTranslation(0,img.height,0);  // move it back to (0,0,0)
    m3D.appendRotation(-45, Vector3D.X_AXIS); // rotate it (this gives it the trapezoid shape)
    m3D.appendTranslation(0,img.height,0);  // move to the bottom of "img"

    reflection.transform.matrix3D = m3D;    
}

您可能希望稍微使用这些数字来影响您的目标,但这是解决问题的方法。

注意:MXML中的任何转换(如设置x,y)都将被reflectImage函数覆盖。