2010-09-27 11 views
0

J'ai des données graphiques complexes sur une image-objet ou une forme (peu importe ce qui est exactement). Mais je veux dessiner une ombre (intérieure aussi) pour un Rect ([10, 10, 240, 25] par exemple) ou un autre chemin.Dessiner une ombre sans filtre sur l'objet graphique

/// code before 
    grObj.graphics.drawRect(10, 10, 240, 25); 
     /// -> draw inner shadow on this objcect somehow 
    /// code after 

Est-il possible d'effectuer des filtres sans filtre?

ps. http://ipicture.ru/uploads/100927/RHZF1K6Exu.png


résolution:

BitmapData(*).applyFilter(*,*,*,*); // play with this function :) 

également http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html#applyFilter()

Répondre

0

Je suppose que vous ne voulez pas ajouter des filtres à votre objet parce que vous envisagez d'ajouter un colorTransform et ne pas veulent que les filtres changent également de couleur. Si cela est le cas, vous pouvez séparer le filtre en créant une autre image-objet de la même taille que l'original, puis ajouter un filtre d'ombre portée au nouveau sprite avec le paramètre hideObject défini sur true.

//display object 
var grObj:Sprite = new Sprite(); 
grObj.graphics.beginFill(0xFF0000, 1); 
grObj.graphics.drawRect(0, 0, 240, 25); 
grObj.graphics.endFill(); 

//filter object 
var dsFilter:Sprite = new Sprite(); 
dsFilter.graphics.beginFill(0); 
dsFilter.graphics.drawRect(0, 0, grObj.width, grObj.height); 
dsFilter.graphics.endFill(); 

dsFilter.filters = [new DropShadowFilter(4.0, 45, 0, 1.0, 4.0, 4.0, 1.0, 3, true, false, true)]; 

//display list 
grObj.x = dsFilter.x = 10; 
grObj.y = dsFilter.y = 10; 

addChild(grObj); 
addChild(dsFilter); 
+0

thx pour la réponse, mais je connais aussi une telle résolution. Pour moi c'est trop évidemment. Dans mon cas, je veux dessiner des ombres, ou un autre effet complexe sur un objet graphisc sans effets ni ajout d'enfants. – Focker

+0

vous pouvez expérimenter avec des dégradés (grObj.graphics.beginGradientFill()), mais je ne pense pas qu'il soit possible de créer ce que vous voulez avec un dégradé. à part ça, je crois que la seule autre alternative serait de produire vos propres ressources graphiques avec un éditeur graphique externe et d'utiliser ces ressources pour créer vos sprites avec un remplissage bitmap (grObj.graphics.beginBitmapFill()) plutôt qu'un remplissage normal. – TheDarkIn1978

+0

J'ai vraiment intéressé jusqu'où nous pouvons aller avec Matrixes et Gradients ... – Focker

Questions connexes