跳ね回る火の玉 - 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);
}