如何在Flex中创建位图图像的反射效果?

时间:2009-01-23 19:14:48

标签: flex flash actionscript air

我正在寻找一种简单,干净且内存有效的方法来创建和应用反射效果(你知道那个由着名的iPhone UI推广的那个)到我加载到Flex应用程序中的位图图像运行。源图像将具有不同类型(JPG,PNG等),但是可接受的解决方案可以假设每个图像已经加载并存储为BitmapData。

我希望能够做的是,可选地,对BitmapData的某些视图应用反射效果,但仍保持源BitmapData完整,因为并非所有视图都需要反射效果。见解非常感谢!提前谢谢。

4 个答案:

答案 0 :(得分:3)

您可以使用此课程:

http://code.google.com/p/cay/source/browse/trunk/as3/cl/cay/effects/Reflejo.as

这可能并不完美,但至少会给你一个快速的开始。然后更新&如果您喜欢,可以根据自己的需要进行修改。

HTH

答案 1 :(得分:2)

Chet Haase posted the answer I was looking for,附带源代码和演示视频。希望它能帮助其他人寻找灵活的解决方案。

答案 2 :(得分:1)

可能是一种更简单的方法,但是我会说只是显示倒置的图像的第二个副本并使其透明:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    creationComplete="onCC()">
    <mx:Script>
        <![CDATA[
            private function onCC():void {
                var m:Matrix = new Matrix(1,0,0,-1,flipImage.transform.matrix.tx, flipImage.transform.matrix.ty + flipImage.height);
                flipImage.transform.matrix = m;
                flipImage.alpha = 0.3;
            }
        ]]>
    </mx:Script>
    <mx:VBox verticalGap="0">
        <mx:Image source="http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png">

        </mx:Image>
        <mx:Image id="flipImage" source="http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png">

        </mx:Image>
    </mx:VBox>
</mx:Application>

答案 3 :(得分:0)

你总是可以使用scaleX = -1;

这将水平翻转图像。 但它使用左侧作为轴翻转,因此您必须将图像的x位置调整为image.x = image.x + image.widht;