ombres portées AS3 Flash ne se présentent pas lors du changement de la hauteur et la largeur

StackOverflow https://stackoverflow.com/questions/1104983

Question

Dans AS3 Je crée une ombre, qui fonctionne très bien. Mais quand je change la hauteur ou la largeur de l'objet (mcWhiteBorder) l'ombre de baisse ne semble pas du tout. Toutes les idées?

var mcWhiteBorder:whiteBorder = new whiteBorder();
var dropShadow:DropShadowFilter = new DropShadowFilter();
dropShadow.distance = 1;
dropShadow.alpha = .2;
dropShadow.blurX = 10;
dropShadow.blurY = 10;
mcWhiteBorder.height = houseXML.height-40;
mcWhiteBorder.width = houseXML.width+5;
mcWhiteBorder.x = houseXML.photoX-10;
mcWhiteBorder.y = houseXML.photoY+20;
mcWhiteBorder.filters = [dropShadow];

addChild(mcWhiteBorder);
Était-ce utile?

La solution

Prenez note que les filtres ne fonctionnent pas avec des clips plus grandes que « certaines valeurs », un regard sur les commentaires dans ce fil ...

Autres conseils

Je l'ai copié et collé votre code et il semble fonctionner. Bien sûr, je ne sais pas ce que votre bibliothèque de symboles ressemble (je viens d'utiliser un sqare gris) et je l'ai remplacé la variable houseXML avec des valeurs statiques. Le code que j'ai essayé est le suivant:

var mcWhiteBorder:whiteBorder = new whiteBorder();
var dropShadow:DropShadowFilter = new DropShadowFilter();
dropShadow.distance = 1;
dropShadow.alpha = .2;
dropShadow.blurX = 10;
dropShadow.blurY = 10;
mcWhiteBorder.height = 200;
mcWhiteBorder.width = 300;
mcWhiteBorder.x = 50;
mcWhiteBorder.y = 50;
mcWhiteBorder.filters = [dropShadow];

addChild(mcWhiteBorder);

Il semble fonctionner très bien .. Vérifiez votre houseXML et voir si les valeurs attribuées sont valides et ainsi de suite.

J'ai eu quelques problèmes dans le passé avec cela, aussi. Je suis venu à la conclusion que cela fonctionne toujours si vous ajoutez le filtre au tableau de filtre existant, au lieu de créer un nouveau, même si elle est vide. Je ne suis pas vraiment sûr pourquoi. Votre code serait quelque chose comme:

var mcWhiteBorder:whiteBorder = new whiteBorder();
var tmpFilters:Array = mcWhiteBorder.filters;
var dropShadow:DropShadowFilter = new DropShadowFilter();
dropShadow.distance = 1;
dropShadow.alpha = .2;
dropShadow.blurX = 10;
dropShadow.blurY = 10;
mcWhiteBorder.height = houseXML.height-40;
mcWhiteBorder.width = houseXML.width+5;
mcWhiteBorder.x = houseXML.photoX-10;
mcWhiteBorder.y = houseXML.photoY+20;
tmpFilters.push(dropShadow);
mcWhiteBorder.filters = tmpFilters;

addChild(mcWhiteBorder);

Ainsi, au lieu de asigning un filtre à la propriété filters, vous ajoutez en fait que le filtre à ceux qui existent déjà. Je suis curieux de savoir si cela fonctionne.

Je ne vois aucun problème syntaxe sage.

dropShadow.distance = 1;
dropShadow.alpha = .2;
dropShadow.blurX = 10;
dropShadow.blurY = 10;

C'est assez estompé. Changer alpha à 1 ou 2 et voyez si vous pouvez le voir. , Vous ne semblez pas être aussi définir la couleur. Je pense que la valeur par défaut est noir. Assurez-vous que vous êtes l'objet est pas sur quelque chose de sombre et vous êtes juste le manquer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top