スポンサーサイト
2009.01.10 | |
ActionScript勉強中。
前回のエントリと似たようなカンジですが、今度は残像にブラーをかけてみました。
クリックすると、前回っぽい残像になります。
前回はonEnterFrameでムービークリップの_alphaを変化させていましたが、今回はBlurFilterを使用してonEnterFrameでかけるブラーの強さを調整しています。
ソレ以外に前回と変わってる部分としては、
import flash.filters.BlurFilter;jien_mcはオーサリングで作ったムービークリップです。
// 加速度
var k:Number = 0.4;
// 減衰係数
var a:Number = 0.5;
// 拡大率
var s:Number = 1.05;
// 残像フレーム数
var aiLimit:Number = 8;
// 残像インターバル
var aiInterval:Number = 1;
// 透過率
var ar:Number = 0.8;
// ブラー係数
var b:Number = 3;
// マウスカーソル非表示
Mouse.hide();
// 本体は非表示
jien_mc._visible = false;
// マウスカーソルを追跡するムービークリップ
var depth = _root.getNextHighestDepth();
var chaser_mc:MovieClip
= jien_mc.duplicateMovieClip("chaser_" + depth, depth);
// スピード
chaser_mc.speedX = 0;
chaser_mc.speedY = 0;
// 残像インターバルカウンタ
chaser_mc.intervalCnt = 0;
// アルファ値を変化させる残像か?
chaser_mc.alphaAfterImage = false;
// フレーム毎の処理
chaser_mc.onEnterFrame = function() {
if (this.intervalCnt >= aiInterval) {
// 残像
var afterImage_mc:MovieClip
= createAfterImage(this.alphaAfterImage);
this.swapDepths(afterImage_mc);
// カウンタを初期化
this.intervalCnt = 0;
} else {
this.intervalCnt += 1;
}
// 移動
this.speedX = k * (_xmouse - chaser_mc._x) + a * this.speedX;
this.speedY = k * (_ymouse - chaser_mc._y) + a * this.speedY;
this._x += this.speedX;
this._y += this.speedY;
}
// クリックしたら残像の種類を変更する
chaser_mc.onRelease = function() {
this.alphaAfterImage = !this.alphaAfterImage;
}
// 残像を作成します。
function createAfterImage(alphaAfterImage:Boolean):MovieClip {
// 本体をコピーする
var depth:Number = _root.getNextHighestDepth();
var afterImage_mc:MovieClip
= chaser_mc.duplicateMovieClip("afterImage_" + depth, depth);
afterImage_mc.cnt = 0;
// alphaAfterImageがtrueならアルファ値を変化させる。
// そうでなければブラー
if (alphaAfterImage) {
afterImage_mc.effect = function () {
this._alpha *= ar;
}
} else {
afterImage_mc.blur = b;
afterImage_mc.effect = function () {
this._width *= s;
this._height *= s;
var filter:BlurFilter
= new BlurFilter(this.blur, this.blur, 1);
this.filters = [filter];
this.blur += b;
}
}
// フレーム毎の処理
afterImage_mc.onEnterFrame = function () {
this.effect();
this.cnt += 1;
// 指定フレーム数に達したら消滅
if (this.cnt > aiLimit) {
this.removeMovieClip();
}
}
afterImage_mc.effect();
return afterImage_mc;
}
2007.03.30 | | Comments(0) | Trackback(0) | Flash/ActionScript
« | HOME | »
Author:HundredthMonkey
プログラマ。