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

Apache flex 在flex中,如何使用矩阵类创建梯形形状?,apache-flex,actionscript-3,flash-builder,Apache Flex,Actionscript 3,Flash Builder,我想使用梯形形状的图像反射。这就是为什么我问如何用矩阵类创建梯形的原因,因为数学上的原因,你不能用矩阵类本身来实现这一点 但是,只要您为Flash Player 10或更高版本进行编译,就可以实现您希望实现的效果,即使图像或组件反射看起来像是具有3D透视效果。您可以使用类来实现这一点,该类允许您在Flash中影响伪3D变换和投影变换 范例 在MXML中: <mx:Image id="img" source="@Embed('image.jpg')"/

我想使用梯形形状的图像反射。这就是为什么我问如何用矩阵类创建梯形的原因,因为数学上的原因,你不能用矩阵类本身来实现这一点

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

范例

在MXML中:

<mx:Image id="img" source="@Embed('image.jpg')"/>
<mx:Image id="reflection" source="{img.source}"
          creationComplete="reflectImage()"/>
你可能会想玩一些数字来影响你想要的外观,但这是一种方法


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

您能否提供更多关于具体操作的描述?主要是,我不明白您为什么需要或想要使用Matrix类。您是否计划使用矩阵变换其他组件的视图?如果您只想绘制一个梯形,可以将其作为图形基本体来完成,例如,扩展FilleElement类并重写drawg:graphics方法,就像spark.primitives.Rect类那样。我想在梯形形状中使用图像反射。这就是为什么我问如何用矩阵类创建梯形。你知道,复制粘贴你刚才所说的并没有什么帮助。
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;    
}