Нарисуйте нижний закругленный угол - PullRequest
1 голос
/ 16 февраля 2011

Как нарисовать фигуру, которая только округлена внизу, без использования библиотек ?

enter image description here

  var _myShape:Shape = new Shape();
      _myShape.graphics.lineStyle(4,0x000000,1,true,....);
      _myShape.graphics.drawRoundRect(0,0,50,50,10);

Ответы [ 3 ]

1 голос
/ 17 февраля 2011

, если вы не хотите использовать библиотеки Flex (как вы прокомментировали ответ Гленна) и если вас интересует только заполнение, вы можете использовать технику маскировки для своих спрайтов.

var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xFF0000, 1.0);
sprite.graphics.drawRoundRect(0, 0, 300, 200, 100, 100);
sprite.graphics.endFill();

var spriteMask:Shape = new Shape();
spriteMask.graphics.beginFill(0);
spriteMask.graphics.drawRect(0, sprite.height / 2, sprite.width, sprite.height / 2);
spriteMask.graphics.endFill();

sprite.mask = spriteMask;
sprite.addChild(spriteMask);

addChild(sprite);

включая штрихи немного сложнее, но все же возможно.

1 голос
/ 16 февраля 2011

См. Эту страницу: Почему drawRoundRectComplex () не задокументировано в ActionScript?

Вам нужен "drawRoundRectComplex"

РЕДАКТИРОВАТЬ: Если вы не можете использовать Flex SDK, ваш единственный другой "настоящий" вариант рисования - это использовать комбинацию lineTo и curveTo. Самый простой способ сделать это - скопировать код из класса GraphicsUtil в Flex SDK. Мне не ясно, считается ли это открытым исходным кодом или нет, поэтому я не собираюсь публиковать его здесь.

0 голосов
/ 17 февраля 2011

Вы можете эмулировать обводку, используя GlowFilter, хотя это будет дороже, чем истинный обводка.

Вам также не нужна маска - просто нарисуйте две рамки.

var s:Sprite = new Sprite;
addChild(s);

s.graphics.beginFill(0xff0000);
s.graphics.drawRoundRect(0,0,50,50,10);
s.graphics.endFill();

s.graphics.beginFill(0xff0000);
s.graphics.drawRect(0,0,50,20);
s.graphics.endFill();

s.filters = [new GlowFilter(0x0, 4, 8,8, 40)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...