我有一个AS3位图图像,我想像这样倾斜:
我只想扭曲图像的底部,并让顶部单独留下。基于我到目前为止所做的研究,看起来我想要使用Matrix3D类,但我不太确定如何有效地实现它。
感谢下面的回答,本文是了解Matrix3D类的3x3矩阵的绝佳资源: http://www.senocular.com/flash/tutorials/transformmatrix/ 然而,就像该教程一样棒,它不提供扭曲上述图像的能力。我正在寻找的是关于如何使用4x4矩阵的类似教程。我想知道的是将数字放在矩阵中的位置,我应该能够找出其他所有内容。
以下是我所得到的一些示例代码:
var tempLoader:Loader=new Loader();
var tempBitmap:Bitmap;
var fattenTheBottom:Number;
tempLoader.load(new URLRequest("image.png"));
tempLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,castBitmap);
function castBitmap(e:Event):void
{
tempLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,castBitmap);
tempBitmap = Bitmap(tempLoader.content);
// Make the image into a trapezoid here using fattenTheBottom
addChild(tempBitmap);
}
任何建议都会非常感激!
答案 0 :(得分:4)
如果你想快速使用Matrix3D,这里有一个你应该使用的值的例子:
var m3d:Matrix3D = new Matrix3D(Vector.<Number>([
1, 0, 0, 0,
0, 1.15, 0.25, 0.00005,
0, 0, 1, 0,
0, 0, 0, 1
]));
tempBitmap.transform.matrix3D = m3d;
但很快您会注意到这种方法会以您不想要的方式扭曲图像。例如,它将水平在一侧挤压您的图像(如您所愿),但图像的内容也将被拉伸垂直。很难解释,但是一旦你尝试了上面的方法,你就会注意到图像是如何被垂直拉伸的。
使用rotationX
结合PerspectiveProjection
和scaleY
可以获得同样的效果。
如果您想在代码和图片结果中获得更优雅的解决方案,请试用DistortImage。那里的方法不直接(使用子图像网格),但效果很好。
答案 1 :(得分:2)
我只能建议您阅读我发现的最佳信息:
Understanding the Transformation Matrix
读到这个,我想,你真的可以理解关于变换矩阵的一切。它来自Flash 8(AS2),但它的理论信息也可以使用AS3。