2009-08-14 6 views

Répondre

-1

ne peut faire ... voir ceci: Apply Filter to Everything in AS3

MISE À JOUR: Comme le poste référencé explique, vous pouvez soit disposer le matériel nécessaire pour appliquer le filtre dans un récipient différent du reste, ou (et je pense que ceci est plus utile dans votre cas) mettez une bitmap au dessus de toute votre interface, et dessinez/applyFilter quand quelque chose change. Le Bitmap n'interrompra pas les événements de la souris (ce n'est pas un InteractiveObject), et vous pourrez contrôler comment, quand et quelle sous-zone de votre zone filtrée mettre à jour ... spécialement avec ColorMatrixFilter, comme il le fait n'affecte pas les pixels environnants. C'est un peu de travail à mettre en place, mais ça paye;)

Bonne chance!

+0

Je l'ai annoté au cas où quelqu'un pense que le post référencé répond à la question. L'OP a un code qui, pour une raison ou une autre, échoue à appliquer un filtre à un conteneur et à tous ses enfants. Mais ce n'est pas mon problème - contrairement à ce que suggère cette réponse, c'est assez facile. Mon problème est que le filtre est appliqué au conteneur * whole * (et à ses enfants), et je veux seulement qu'une région soit filtrée. –

+0

Eh bien, je pense avoir répondu à votre question: vous ne pouvez pas appliquer de filtres à une zone rectangulaire d'un DisplayObject. Le thread référencé explique en détail le fonctionnement des filtres et les solutions de contournement possibles. Je vais mettre à jour ma réponse avec une solution de contournement plus détaillée. – Cay

2

Une méthode potentielle de retrait serait d'avoir deux copies de l'objet, l'une au-dessus de l'autre. L'objet supérieur doit avoir le filtre appliqué et sa propriété scrollRect doit être définie pour le masquer au rectangle que vous souhaitez. L'objet arrière montrerait alors le reste de l'objet dans sa forme inchangée.

+0

Cela vaut la peine d'explorer - merci! Je peux voir cela fonctionner si j'ai gardé deux copies non seulement du conteneur mais aussi de sa liste d'affichage, et maintenu leurs propriétés changeantes en parallèle. Il est frustrant qu'un hack si complexe soit nécessaire lorsque vous modifiez quelques lignes dans ColorMatrixFilter. Mais Adobe a fermé le paquet de filtres à la sous-classification. –

Questions connexes