In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

モザイクでフェードイン/フェードアウト

モザイクフェードアウト→入替→モザイクフェードイン
の繰り返し。
package {
	import flash.display.Sprite;
	import flash.events.Event;
	
	[SWF(width="465", height="465", backgroundColor="0x000000", frameRate="60")]
	/**
	 * モザイクフェードアウト→入替→モザイクフェードイン
	 * の繰り返し。
	 */

	public class fadeMosaic_ver1 extends Sprite
	{
		private var Layer_a:Sprite = new Sprite();
		private var Layer_b:Sprite = new Sprite();
		private var mosaicMC:mosaicFader;
		private var W:Number = 465;
		private var H:Number = 465;
		//private var W:Number = 900;
		//private var H:Number = 450;
		private var mosCounter:uint = 0;
		
		public function fadeMosaic_ver1()
		{
			addChildAt(Layer_a,0);
			addChildAt(Layer_b,1);
			setImg();
			setMosaicLayer();
			mosaicMC.addEventListener("mosaicComp", mosaicCompHandler);
			mosaicMC.mosaicFromTo(1,50,Layer_a, 2, 1);
		}
		private function mosaicCompHandler(e:Event):void
		{
			trace("mosaicComp");
			if(mosCounter%2==1){
				mosaicMC.mosaicFromTo(1,50,Layer_a, 2, 2);
			} else {
				mosaicMC.mosaicFromTo(50,1,Layer_a, 2, 0);
				setImg();
			}
			mosCounter++;
		}
		private function setImg():void
		{
			Layer_a.graphics.clear();
			for( var i:uint=0; i<10; i++ )
			{
				Layer_a.graphics.beginFill(0xffffff);
				Layer_a.graphics.drawCircle(W*Math.random(),H*Math.random(),50*Math.random());
				Layer_a.graphics.endFill();
			}
			
		}
		
		private function setMosaicLayer():void
		{
			mosaicMC = new mosaicFader(W, H)
			Layer_b.addChild( mosaicMC );
			mosaicMC.x = W / 2;
			mosaicMC.y = H / 2;
		}
		
	}
}
	import flash.display.Sprite;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.geom.Matrix;
	import caurina.transitions.Tweener;
	import flash.events.Event;
	

class mosaicFader extends Sprite
{
	private var bmp:Bitmap;
	private var bmpData:BitmapData;
	private var Mtx:Matrix;
	private var W:Number, H:Number;
	public var scaleNum:uint = 10; //モザイクの拡大率
	
	public function mosaicFader(pw:Number, ph:Number)
	{
		W = pw;
		H = ph;
		bmpData = new BitmapData(1,1);
		bmp = new Bitmap(bmpData);
		addChild(bmp);
		bmp.x = -W / 2;
		bmp.y = -H / 2;
	}
	
	public function setMosaic(mc:Sprite):void
	{
		Mtx = new Matrix();
		Mtx.scale( 1/scaleNum, 1/scaleNum );
		bmpData = new BitmapData( W/scaleNum, H/scaleNum, false, 0x000000 );
		bmpData.draw( mc, Mtx );
		bmp.bitmapData = bmpData;
		bmp.scaleX = W/bmpData.width;
		bmp.scaleY = H/bmpData.height;
	}
	
	public function mosaicFromTo(n1:uint, n2:uint, mc:Sprite, t:Number, d:Number):void
	{
		scaleNum = n1;
		Tweener.addTween(this, {time:t, scaleNum:n2, onUpdate:setMosaic, onUpdateParams:[mc], 
		transition:"linear", onComplete:mosaicComplete, delay:d});
	}
	private function mosaicComplete():void
	{
		dispatchEvent(new Event("mosaicComp"));
	}
	
	
}