2010-07-07 255 views
3

如何在Flex中的Sprite上完成裁剪/裁剪?裁剪/剪裁Sprite

<?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

使用面具。

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

我同意,使用面具。但是請不要使用;) – 2010-07-07 02:36:51

+0

爲什麼不使用「with」? – 2010-07-07 03:10:13

+1

好的,這工作。任何其他需要此功能的人也應該知道,您必須將蒙版添加爲被蒙版組件的子項,否則它將無法工作。 – Joshua 2010-07-07 05:08:03