1

もっと簡単な質問をします。とにかく、オブジェクトの中心とマウス (角度) の間の線の回転を計算しました。North aka 0 から始まり、CW サークルを北に近い 359 まで進みます。AS3 に「object.rotation = angle;」と依頼します。すべてのフレーム。「角度」と「object.rotation」の値を示す 2 つのテキスト領域があります。180 の後、object.rotation は -180 になり、0 に戻ります。なぜですか?

さらにシンプル。値 A を取得し、次に A = B とします。次に、コンピューターに A と B を表示するように依頼します。180 から 360 では、B=B-360 です。

回転は満足ですが、数字が間違っています。数字が合わない理由を説明する必要があります。オブジェクトの回転範囲を 0 ~ 360 にし、入力した数値によって直接決定する方法についてアドバイスが必要です。私の場合は「角度」。

つまり、回転 2892 を入力した場合、12 ではなく、-348 ではなく、(はい、8*360+12) である必要があります... これらは視覚的に同じ回転を表していますが。

4

2 に答える 2

3

これは、Flash のオーバーフロー保護の結果だと思います。1 時間回転するムービー クリップを想像してみてください。フレームごとに回転が 50 ずつ増加します。 10000000*PI/180 の正弦。そのため、望ましくない動作や異なる動作を防ぐために、Flash Player の開発者は、実際の回転が -180...180 の間隔で返されるようにしました。

渡された結果をそのまま保持するために、ローテーション セッター/ゲッター関数をオーバーライドしようとする場合があります。

class RotationTest extends Sprite {
    private var myRotation:Number;
    public override function set rotation(value:Number):void {
        super.rotation=value;
        myRotation=value;
    }
    public override function get rotation():Number { return myRotation; }
}
于 2013-02-13T18:44:11.540 に答える
3

あなたはそれで立ち往生しているようです。ドキュメントから:

0 ~ 180 の値は時計回りの回転を表します。0 から -180 までの値は、反時計回りの回転を表します。この範囲外の値を 360 に加算または減算して、範囲内の値を取得します。たとえば、ステートメント my_video.rotation = 450 は my_video.rotation = 90 と同じです。

12 ではなく 2892 を保存する場合は、手動で追跡する必要があります。

標準外のものを入力すると、標準化されます。これは、デザイナーを使用する人々にとって使いやすくするためだと思いますが、グラフィックの最適化もそれに依存している可能性があります。

于 2013-02-13T18:41:50.370 に答える