« FLASHでペイント (1) エアブラシと消しゴム - copyPixels | Main | 迫りくる光 - draw »

跳ね回る火の玉 - draw / applyFilter

drawの代表的な使い方として、オブジェクトの軌跡を描く使い方。徐々に消えていく処理はBlurFilterとColorMatrixFilterをapplyFilterを使って適用していますが、毎フレーム実行すると負荷が高いので、setIntervalを使って実行するレートを調整しています。
動きに関してはあまりにも適当なので、まだ未公開です。

import flash.filters.*;
import flash.display.*;
import flash.geom.*;

var bmp:BitmapData = new BitmapData(360, 240, true, 0);
var stage:MovieClip = this.createEmptyMovieClip("stage", 2);
stage.attachBitmap(bmp, 1);

var cs:MovieClip = this.createEmptyMovieClip("cs", 1);
var clr:ColorTransform = new ColorTransform(4,2,1,1,70,10,0,0);
var blur:BlurFilter  = new BlurFilter(5, 5, 2);
var matrix:Array = [
		.9, 0, 0, 0, 1,
		0, .9, 0, 0, 3,
		0, 0, .9, 0, 1,
		0, 0, 0, 1, 0
		];
var black:ColorMatrixFilter = new ColorMatrixFilter(matrix);

for(var i = 0; i < 18; i++){
	var ppt:Object = {_x:Math.random()*Stage.width, _y:Math.random()*Stage.height, _xscale:Math.random()*80+20, _yscale:_xscale};
	var m:MovieClip = cs.attachMovie("mc", "m"+i, i, ppt);
	var trans:Transform = new Transform(m);
	trans.colorTransform = clr;
	m.blendMode = "add";
	m.filters = [blur];
}

interval = setInterval(setFilter, 70);
this.onEnterFrame = function():Void {
	bmp.draw(cs);
}

function setFilter():Void {
	bmp.applyFilter(bmp, bmp.rectangle, new Point(0,0), black);
	bmp.applyFilter(bmp, bmp.rectangle, new Point(0,0), blur);
}

TrackBack

このエントリーのトラックバックURL:
http://casualplay.net/cgi-bin/mt/mt-tb.cgi/14

Post a Comment