Проблема с фильтром искрового размытия Flex 4

Я пытаюсь создать свое собственное модальное окно (встроенный менеджер всплывающих окон не будет работать для этого приложения) и размыть объекты за окном. Приведенный ниже код явно неверен, поскольку он не работает, но может ли кто-нибудь указать мне правильное направление? Нужно ли вручную размывать каждый объект за окном?

<s:Button label="Testing" left="512" top="300">     
</s:Button>
<s:Rect width="1024" height="768" alpha=".5">
    <s:fill>
        <s:SolidColor color="#000000">              
        </s:SolidColor>
    </s:fill>
    <s:filters>
        <s:BlurFilter>              
        </s:BlurFilter>
    </s:filters>
</s:Rect>

person mr.freeze    schedule 18.06.2011    source источник


Ответы (1)


Ваш код, очевидно, просто размоет этот черный прямоугольник и ничего больше. Проблема здесь в том, что вы хотите размыть все приложение, кроме модального окна.

Я могу придумать два решения:

решение 1

Поместите все свое приложение в отдельный класс и примените к нему фильтр:

<s:Application>

    <s:States>
        <s:State name="normal" />
        <s:State name="modal" />
    </s:States>

    <view:Main>
        <view:filters.modal>
            <s:BlurFilter>
        </view:filters.modal>
    </view:Main>

    <s:Group includeIn="modal">
        <view:ModalWindow />
    </s:Group>
</s:Application>

(это не рабочий образец кода: его цель — просто передать идею)

Решение 2

Сделайте снимок экрана вашего приложения (создайте растровое изображение) до того, как появится окно. Поместите это изображение поверх своего приложения и примените к нему фильтр размытия. Затем поместите модальное окно. Вы не могли ничего щелкнуть из-за того, что изображение перекрывало все, но это то поведение, которое вы хотите от модального окна.

person RIAstar    schedule 18.06.2011