マスクをかける

(サンプル一覧を表示する)

FlashDevelop を使って、マスクをかけるテストをしてみました。
マスクをかけると、画像の一部分だけを表示することができます。
Flash の実行画面
マスクをかける

Flashプレーヤーが入っていないか、JavaScriptが無効になっているようです。

Get Adobe Flash player

マスクをかける
枠の中でマウスを動かしてみてください。

ソースコード

package 
{
	import flash.display.Bitmap;
	import flash.display.GradientType;
	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	import flash.text.TextField;
	
	/**
	 * マスクをかけるサンプル
	 * @author Hikipuro
	 */
	public class Main extends Sprite 
	{
		/**
		 * 埋め込み画像
		 */
		[Embed(source='../image/test001.png')]
		private var image1:Class;
		
		/**
		 * 背景用ビットマップ
		 */
		private var bitmap:Bitmap;
		
		/**
		 * マスク用スプライト
		 */
		private var maskSprite:Sprite;
		
		/**
		 * コンストラクタ
		 */
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		/**
		 * 初期化イベント
		 * @param	e
		 */
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			// マスク画像の作成
			var colors:Array = [0x000000, 0x000000]; 
			var alphas:Array = [1, 0]; 
			var ratios:Array = [0, 255]; 
			var matrix:Matrix = new Matrix(); 
			matrix.createGradientBox(100, 100, 0, 0, 0); 

			maskSprite = new Sprite();
			maskSprite.graphics.beginGradientFill(GradientType.RADIAL, 
                                colors, 
                                alphas, 
                                ratios, 
                                matrix); 

			maskSprite.graphics.drawCircle(50, 50, 50); 
			maskSprite.graphics.endFill();
			addChild(maskSprite);
			
			// 背景画像の準備
			bitmap = Bitmap(new image1);
			addChild(bitmap);
			
			// 背景画像とマスクそれぞれのビットマップキャッシュを有効にする
			bitmap.cacheAsBitmap = true;
			maskSprite.cacheAsBitmap = true;
			
			// マスクを設定する
			bitmap.mask = maskSprite;
			
			// フレーム開始イベントの登録
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
		
		/**
		 * フレーム開始イベント
		 * @param	event
		 */
		private function onEnterFrame(event:Event):void
		{
			maskSprite.x = mouseX - 50;
			maskSprite.y = mouseY - 50;
		}

	}
	
}		

参照

外部リンク