質問

X、Yポイントのセットに沿ってMovieclipをアニメーション化するMovieclip Spawnerクラスとアニメータークラスを作成しました。 GreensockのTweenMaxを使用してアニメーションを達成し、各ポイントの間に速度を1秒に設定しました。問題は、2つのポイント間の距離が小さい場合、遅すぎるように見えることです。

私がやりたいのは、2つのポイント間の距離を計算し、0〜1秒の範囲で速度を出力することです。

助けやアドバイスは大歓迎です。

ありがとうございました、

EB_DEV

役に立ちましたか?

解決

私は何を二番目に マッティ 言ったが、それはより速く作ることができる - 約48〜64ビットのメモリのコスト(あまりにも多く!!! ...)

var dX:Number = x1 - x2;
var dY:Number = y1 - y2;
var dist:Number = Math.sqrt(dX * dX + dY * dY);
var animTime = dist / state.stageWidth;

そしてそれを説明するために EB DEVのリクエスト、平方根ピタゴラス定理の一部があります:

a^2 + b^2 = c^2

x軸とy軸の線は、右角の三角形の2本の脚として見ることができ、したがって、陽電子は2つの特定のポイント間の距離になります(これが必要です)。

最初に、ポイント(x1 -x2、y1 -y2)を差し引きます。私たちはまだ2つのポイントを持っていますが、三角形の右角部分は今にあります 0, 0 - x軸とy軸が交差するポイント。これをピタゴラス定理に適用できるようにするには、サイズが何であるか見てみましょう ab 脚の長さ a 間の距離です 0, 0 およびポイント1.減算 0, 0 まだポイント1だけを残します - しかし、それはx軸のどこかにあることを知っています - したがって、そのyは0になります。 a ポイント1のx部分に等しい。

同じことが起こります b 脚とポイント2。しかし、今回は、その一部を取得します。

計算します c, 、最初に第2の力を合計します ab (a^2 + b^2)。私たちは今、c^2を持っているので、 c - 陽子腸皮、平方根(AS3.0のmath.sqrt())を計算します。

c 距離です。

これがこれを説明することを願っています。

他のヒント

最小速度を距離を短くしたいと思います。

const MIN_SPEED:Number = ???// adjust this value
var distance:Number = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
var duration:Number = Math.min(1.0, distance / MIN_SPEED);

長距離1.0 <距離 / min_speedの場合、期間は1.0 [sec]に設定されます
小距離1.0>距離 / min_speedの場合、およびMin_Speedで定義されたある速度で持続時間が移動するように設定されます。

あなたがしたいことは、2つのポイント間の距離を計算し、それに関連する時間を持つことです。関係を正確に定義する方法は異なります。 1秒のアニメーションが1つのアニメーションです。ここでは、ステージの一方の端からもう一方の端などに移動します。これはあなたのベースラインであり、すべてのアニメーションはそれに関連します。

ステージの幅全体にわたるアニメーションは1秒であり、それよりも短いものはその1秒に関連しているとしましょう。

dist = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
animTime = dist / state.stageWidth;

更新:Math.sqrtは、ポイント間の違いの平方根を取得します。実際の距離ではなくステージサイズに比べて距離にのみ興味があるため、必ずしもこれを行う必要はありません。それがそこにある理由は、 stage.stageSize. 。に注意してください (x1-x2)*(x1-x2) 間の距離を二乗しています x1x2 座標、すなわち。に等しい Math.pow(x1-x2,2).

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top