スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--.--.-- | | スポンサー広告

マウスカーソルの軌跡を表示する

ステージ上でマウスカーソルを動かしたときに軌跡を表示するサンプルです。左上のアイコンをクリックすると軌跡の形状を変更できます。




コレは、直前のフレームでのマウスカーソルの位置と現在のマウスカーソルの位置に合うように、だんだん消えるムービークリップを配置する。というのを毎フレーム実行しています。

スクリプトのソースはこんなカンジです。

import flash.filters.BlurFilter;
// 消滅係数
var speed:Number = 0.8;
// 消滅閾値
var threshold:Number = 10;
// ブラー
var blur:Number = 8;
// 軌跡ムービークリップ
var locus_mc:MovieClip = blue_mc;
blue_mc.onRelease = changeLocus;
red_mc.onRelease = changeLocus;
green_mc.onRelease = changeLocus;
black_mc.onRelease = changeLocus;
// 軌跡座標
var oldX:Number;
var oldY:Number;
// フレーム毎の処理
function onEnterFrame() {
if (oldX && oldY) {
// 軌跡ムービークリップを作成
var depth:Number = _root.getNextHighestDepth();
var mc:MovieClip
= locus_mc.duplicateMovieClip("locus_" + depth, depth);
// 距離/角度算出
var dX:Number = _xmouse - oldX;
var dY:Number = _ymouse - oldY;
var d:Number = Math.sqrt(dX * dX + dY * dY);
var r:Number = Math.atan(dY / dX) + (dX >=0 ? 0 : Math.PI);
// 軌跡の位置/長さ/傾き設定
mc._x = oldX;
mc._y = oldY;
mc._width = d;
mc._rotation = r * 180 / Math.PI;
// 軌跡のフレーム毎の変化
mc.onEnterFrame = function () {
if (this._alpha < threshold) {
this.removeMovieClip();
return;
}
this._alpha *= speed;
}
// ブラーフィルタを設定
var filter:BlurFilter = new BlurFilter(blur, blur, 1);
mc.filters = [filter];
}
oldX = _xmouse;
oldY = _ymouse;
}
// 軌跡ムービークリップを変更
function changeLocus() {
locus_mc = this;
}
最初の方で設定しているspeed、threshold、blurはそれぞれ軌跡のムービークリップのアルファ値の変化割合、軌跡ムービークリップを消去するアルファ値、軌跡ムービークリップにかけるブラーの強さデス。

locus_mcというのが軌跡として表示されるムービークリップ(のひな型)で、実際には左上に表示されてる4つのムービークリップのいずれかデス。onEnterFrame内でlocus_mcをduplicateMovieClipして軌跡を作りマス。

oldX、oldYは、一つ前のフレームでの_xmouse、_ymouseデス。onEnterFrame内でセットしています。

軌跡のムービークリップは、
  var dX:Number = _xmouse - oldX;
var dY:Number = _ymouse - oldY;
でx方向、y方向の移動量を算出して、
  var d:Number = Math.sqrt(dX * dX + dY * dY);
で移動距離d、
var r:Number = Math.atan(dY / dX) + (dX >=0 ? 0 : Math.PI);
で移動角度rを求めています。
rを求めるときにdxが0未満だったらMath.PIを加算しているのは、Math.atanが-π/2~π/2の値を返すためデス。

こうやって求めたdを軌跡ムービークリップの幅、rを軌跡ムービークリップの傾きとして軌跡を表示しています。
スポンサーサイト

テーマ:Flash - ジャンル:コンピュータ

2007.04.12 | | Comments(0) | Trackback(0) | Flash/ActionScript

«  | HOME |  »

プロフィール

HundredthMonkey

Author:HundredthMonkey
プログラマ。

ブロとも申請フォーム

この人とブロともになる

メールフォーム

名前:
メール:
件名:
本文:

ブログ内検索


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。