Обрезка / обрезка спрайта - PullRequest
3 голосов
/ 07 июля 2010

Как выполняется обрезка / вырезка на Sprite во Flex?

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="Init()">
  <mx:Script>
    <![CDATA[
      public function Init():void {
        var spr:Sprite=new Sprite();
        uic.addChild(spr);
        uic.graphics.lineStyle(2,0);
        uic.graphics.moveTo(22, 22);
        uic.graphics.lineTo(2222, 2222);
      }
    ]]>
 </mx:Script>
 <mx:Panel title="StackOverflow">
    <mx:UIComponent width="200" height="200" id="uic"/>
  </mx:Panel>
</mx:WindowedApplication>

Обратите внимание, что lineTo полностью покидает UIComponent и Panel.

Как я могу вызвать мой UIComponent или Sprite,Или панель в этом отношении, чтобы обрезать / обрезать? alt text http://www.liquidfeline.com/images/stackoverflow.png

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

Ответы [ 2 ]

5 голосов
/ 07 июля 2010

Вам также следует попробовать использовать scrollRect, это будет быстрее по производительности, чем маска.Введение в scrollRect от Гранта Скиннера.

2 голосов
/ 07 июля 2010

Используйте маску.

var mask:Shape = new Shape();
with(mask.graphics)
{
    beginFill(0xFFFFFF, 1); // white, opaque
    drawRect(0, 0, width, height);
    endFill();
}
uic.mask = mask;
...