Тени Flash AS3 не отображаются при изменении высоты и ширины

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

Вопрос

В as3 я создаю тень, и она отлично работает.Но когда я меняю высоту или ширину объекта (mcWhiteBorder), тень вообще не появляется.Есть идеи?

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);
Это было полезно?

Решение

Обратите внимание, что фильтры не работают с клипами размером больше «определенных значений», посмотрите комментарии в разделе эта тема...

Другие советы

Я скопировал и вставил ваш код, и он, кажется, работает.Конечно, я не знаю, как выглядит символ вашей библиотеки (я просто использовал серый квадрат), поэтому заменил houseXML переменная со статическими значениями.Код, который я пробовал, следующий:

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);

Вроде работает нормально..Проверьте свои houseXML и посмотрите, действительны ли назначенные вами значения и так далее.

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

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);

Поэтому вместо того, чтобы назначать фильтр filters свойство, вы фактически добавляете этот фильтр к существующим.Мне интересно, сработает ли это.

Я не вижу никаких проблем с синтаксисом.

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

Это довольно утеряно.Измените альфа на 1 или 2 и посмотрите, сможете ли вы это увидеть.Кроме того, вы, похоже, не устанавливаете цвет.Я думаю, что по умолчанию черный.Убедитесь, что ваш объект не находится над чем-то темным, и вы просто его не заметили.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top