Нарисуйте тень без фильтра на графическом объекте - PullRequest
0 голосов
/ 27 сентября 2010

У меня есть сложные графические данные на спрайте или фигуре (независимо от того, что именно). Но я хочу нарисовать тень (тоже внутри) для одного Rect ([10, 10, 240, 25], например) или другого пути.

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

Можно ли выполнять фильтры?

пс. http://ipicture.ru/uploads/100927/RHZF1K6Exu.png


Решение:

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

также http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html#applyFilter()

1 Ответ

0 голосов
/ 27 сентября 2010

Я предполагаю, что вы не хотите добавлять фильтры к своему объекту, потому что вы планируете добавить colorTransform и не хотите, чтобы фильтры также меняли цвет.

Если это так, то вы можете отделить фильтр, создав еще один спрайт того же размера, что и оригинал, добавьте в новый спрайт фильтр с падающими тенями, установив для параметра hideObject значение 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);
...