=>MaskApp.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:aspackage="aspackage.*"
minWidth="955" minHeight="600" creationComplete="initFun(event)"
pageTitle="TheStudioOfCenyebao">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
private function initFun(event:FlexEvent):void
{
// 初始化
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 非可视元素 -->
</fx:Declarations>
<s:VGroup width="320" height="230" horizontalCenter="0" verticalCenter="0">
<aspackage:MySprite id="mySprite"/>
</s:VGroup>
</s:Application>
=>MySprite.as
package aspackage
{
import flash.display.GradientType;
import flash.display.Loader;
import flash.display.Sprite;
import flash.geom.Matrix;
import flash.net.URLRequest;
import mx.core.UIComponent;
public class MySprite extends UIComponent
{
/**
* 属性 */
public static const imgUrl:String="public/img/girl.jpg";
/**
* 构造函数
*/
public function MySprite()
{
/**
* 相片加载*/
var loader:Loader=new Loader();
var url:URLRequest=new URLRequest(imgUrl);
loader.load(url);
this.addChild(loader);
/**
* 绘制椭圆形*/
var oval:Sprite=new Sprite();
var colors:Array=[0x000000, 0x000000]; // 黑色;
var alphas:Array=[1, 0]; // 不透明度_从大到小进行渐变;
var ratios:Array=[0, 255]; // 颜色分布比率的数组;
var matrix:Matrix=new Matrix(); // 转换矩阵;
/*参数:宽、高、旋转度数、矩形左上角X、矩形左上角Y*/
matrix.createGradientBox(200, 100, 0, -100, -50);
oval.graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, matrix);
oval.graphics.drawEllipse(-100, -50, 200, 100); // 矩形左上角坐标要跟上面的Matrix相同;
oval.graphics.endFill();
this.addChild(oval);
/**
* 设置缓存*/
loader.cacheAsBitmap = true;
oval.cacheAsBitmap = true;
loader.mask = oval; // 遮盖;
oval.startDrag(true); // 移动;
}
}
}
=>所用素材:
girl.jpg