Как создать эффект отражения с помощью растровых изображений во Flex? - PullRequest
1 голос
/ 23 января 2009

Я ищу простой, чистый и эффективный способ создания и применения эффекта отражения (вы знаете, тот, который популяризирован знаменитым пользовательским интерфейсом iPhone) для растровых изображений, которые я загрузил в приложение Flex на во время выполнения. Исходные изображения могут быть разных типов (JPG, PNG и т. Д.), Но приемлемое решение может предполагать, что каждое изображение уже загружено и сохраняется как BitmapData.

То, что я хотел бы сделать, это применить, при желании, эффект отражения к некоторым представлениям BitmapData, но при этом сохранить исходный BitmapData без изменений, поскольку не для всех представлений этого вида потребуется эффект отражения. Высоко ценится! Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 23 января 2009

Вы можете использовать этот класс:

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

Это, вероятно, не идеально, но, по крайней мере, даст вам быстрый старт. Затем обновите и измените ваши потребности, если хотите.

НТН

2 голосов
/ 31 марта 2009

Чет Хааз опубликовал ответ, который я искал , вместе с исходным кодом и демонстрационным видео. Надеюсь, что это поможет другим, ищущим гибкое решение.

1 голос
/ 24 января 2009

Возможно, более простой способ, но я бы сказал, что нужно просто отобразить вторую копию изображения, перевернутую и сделанную прозрачной:

<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>
0 голосов
/ 19 марта 2009

Вы всегда можете использовать scaleX = -1;

это перевернет ваше изображение по горизонтали. но он переворачивается, используя левую сторону в качестве оси, поэтому вы должны отрегулировать положение x изображения, чтобы оно было image.x = image.x + image.widht;

...