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