2011-05-25 82 views
0

我有以下MXML:添加一個面具到Flex圖片

<s:Image source="@Embed(source='my/path/to/img.png')" > 
    <flex:mask> 
    <s:Group alpha="0.1"> 
     <s:Rect width="129" height="123"> 
     <s:fill> 
      <s:SolidColor color="0x00FFFF"/> 
     </s:fill> 
     </s:Rect> 
    </s:Group> 
    </flex:mask> 
</s:Image> 

不應該在該代碼生成的129px * 123px矩形蒙版,這將產生一個裁剪效果?

謝謝。

+0

什麼是'柔性:mask'?一個自定義組件? – 2011-05-25 16:21:09

+0

@jason它是Flex的一部分。當我cmd點擊它,我得到「源代碼無法找到flash.display.DisplayObject.mask」 – dornad 2011-05-25 17:46:48

回答

0

這應該工作。

<s:Image source="@Embed(source='my/path/to/img.png')" > 
    <s:mask> 
    <s:Group alpha="0.1"> 
     <s:Rect width="129" height="123"> 
     <s:fill> 
      <s:SolidColor color="0x00FFFF"/> 
     </s:fill> 
     </s:Rect> 
    </s:Group> 
    </s:mask> 
</s:Image> 

s:mask是圖像的屬性,將使用內部FXG作爲掩碼。 除非將maskType =「」屬性設置爲alpha(對於剪輯,它是可見或不可見的默認屬性),否則alpha將不會產生任何影響。

+0

是的,它應該,唯一的問題是,它不...屏蔽需要創建之前實際上是這樣設置的(作爲一個面具)。 – 2013-02-21 12:36:24

2

問題是,掩碼對象需要已經創建並添加到顯示列表中,直到它被設置爲掩碼。所以,你的代碼應該改變,以反映這一點,就像這樣:

<s:Group id="imageMask" alpha="0.1"> 
    <s:Rect width="129" height="123"> 
    <s:fill> 
     <s:SolidColor color="0x00FFFF"/> 
    </s:fill> 
    </s:Rect> 
</s:Group> 

<s:Image source="@Embed(source='my/path/to/img.png')" mask="{imageMask}" /> 

有一個美好的一天。

0

這適用於BitmapImageImage有它自己的BitmapImage裏面ImageSkin

創建皮膚,設置skinClass

<s:Image source="@Embed(source='my/path/to/img.png')" 
     skinClass="MyImageSkin"/> 

和內部MyImageSkin找到BitmapImage並設置面膜:

<!--- Primary image display skin part. --> 
<s:BitmapImage id="imageDisplay" left="0" top="0" right="0" bottom="0"> 
    <s:mask> 
     <s:Group alpha="0.1"> 
      <s:Rect width="129" height="123"> 
       <s:fill> 
        <s:SolidColor color="0x00FFFF"/> 
       </s:fill> 
      </s:Rect> 
     </s:Group> 
    </s:mask> 
</s:BitmapImage>