将棋の神様〜0と1の世界〜

「三間飛車のひとくちメモ」管理人、兼「フラ盤」&「チェスクロイド」作者がおくる、将棋コラム

フラッシュアニメーション基礎講座

あるオブジェクトを、スタート位置からゴール位置に動かすときの基本的な方法について紹介しておく。わかりやすいようX座標のみについて考える。
現在のオブジェクトの位置をthis._xと呼ぶことにし、これをゴール位置(座標goalPos)に移動させたい場合、フレーム毎に
this._x += ( goalPos - this._x ) * weight;
を行なえばよい。ゴールに近づくに従いスピードが落ちていき(goalPos - this._xが0に近づくので)、ゴール位置で収束する。ここでweightは速さの重み付けで、0から1までの値を設定する。これが0ならば、オブジェクトは全く動かないし、1ならばアニメーションもなくいきなりゴール位置にたどりつく。余談だが、1<weight<2に設定すると、行き過ぎて、戻りすぎて、行き過ぎて、を繰り返してゴール位置に収束する(笑)。2を超えるとゴール位置には来ず、発散する(で合ってるかな)。
フラ盤のアニメーション速度設定バーは、「最遅」のときこのweightがほぼ0になり、「最速」にするとほぼ1になるようにしてある。「最遅」のときのweightが0.01、「最速」のとき0.99だとしたら、そのスピードは99倍も異なることになる。これが、速度が極端に異なる理由である。