我想在梯形形状中使用图像反射。这就是为什么我问如何用矩阵类
创建梯形形状答案 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
函数覆盖。