迫りくる光 - draw
matrixを使いこなせるようになると、drawメソッドでビットマップを自由に操作することができます。
サンプルでは、matrix.scaleで拡大させていますが、左上を基準に拡大されるため、このままだと中心がズレてしまうので、matrix.translateで移動量だけ中心に戻しています。カラーはタイムラインで変化させて、フレームに飛ばしてます。
import flash.display.*; import flash.geom.*; import flash.filters.*; var scale:Number = 1.24; var blur:BlurFilter = new BlurFilter(1, 1, 2); var dep:Number = 0; this.createEmptyMovieClip("src_mc",1); this.createEmptyMovieClip("cap_mc",2); var src:BitmapData = new BitmapData(360, 240, true, 0); var cap:BitmapData = src.clone(); src_mc.attachBitmap(src, 1); var matrix:Matrix = new Matrix(); var clr:ColorTransform = new ColorTransform(); matrix.scale(scale, scale); matrix.translate((cap.width-cap.width*scale)/2, (cap.height-cap.height*scale)/2); this.onEnterFrame = function():Void { createParticle(); cap.draw(this); cap.applyFilter(cap, cap.rectangle, new Point(0,0), blur); src.draw(cap, matrix, clr, "normal", src.rectangle, true); } function createParticle():Void { dep++; var part:MovieClip = cap_mc.attachMovie("star", "star_mc" + dep, dep); part.blendMode = "hardlight"; part._x = cap_mc._xmouse; part._y = cap_mc._ymouse; part.gotoAndPlay(Math.floor(dep%part._totalframes)+1); part._xscale = part._yscale = 25 + 75*Math.random(); part.vx = (Math.random()*2-1)*10; part.vy = (Math.random()*2-1)*10; part.onEnterFrame = scatter; } function scatter():Void { this._x += this.vx *= .9; this._y += this.vy *= .9; this._xscale = this._yscale *= .9; if (this._xscale < 10){ this.removeMovieClip(); } }