0

ターンテーブルのセットを作成しようとしていますが、mp3を正常にロードして再生できます。これで、ターンテーブルムービークリップに、回転を簡単に変更できるアーム用の別のムービークリップがあります。

私が苦労しているのは、mp3を回転に結び付けることです。mp3の再生中に腕をゆっくりと回転させたいと思っています。アームは、サウンドの開始と終了時に-4で開始し、+ 14(回転)で終了する必要があります。

今ivは次のコードでmp3の長さを計算しようとしました

mp3Length = (_mp3.bytesTotal/(_mp3.bytesLoaded/_mp3.length))/1000;

だから私は曲をロードしてmp3Lengthの値をトレースし、トレースされた値は352.8620408163265です

しかし、iTunesで同じ曲を見ると、長さは5:53です。

だから私は長さを計算する方法に何かが間違っていると推測しています。

次に、次のコードで腕を回転させようとしています。。。

leftDeck.arm.rotation = 18 / mp3Length;

これは、-4と+14の差が18ですが、これはアームをすばやく回転させています。

誰かがこれを解決するための正しい方向に私を向けるのを手伝ってもらえますか?

どうもありがとう

アップデート - - -

ok ivは、mp3の長さを正しく識別するこのコードを見つけました

var Milliseconds:Number = (_mp3.bytesTotal / (_mp3.bytesLoaded / _mp3.length));

var Minutes:uint = Math.floor(Milliseconds/60000);
var Seconds:uint = (Milliseconds%60000);
var SecondsTens:uint = Math.floor(Seconds/10000);

Seconds = Math.ceil(Seconds%10000)
Seconds /= 1000;

trace(Minutes + ":" + SecondsTens + "" + Seconds);

しかし、私はまだ回転を長さに結び付けるのに苦労しています。

4

1 に答える 1

1

MP3 の長さを計算するためにビットレートを知る必要はおそらくないでしょう。これは、Sound クラスlengthにミリ秒単位で長さを報告するプロパティがあるためです。

このSoundChannelクラスには、position再生中のサウンドの現在の位置をミリ秒単位で報告するプロパティがあります。

これは、に基づいて回転のパーセンテージを計算し、それを回転に[soundChannel].position / [sound].length適用できることを意味します。

leftDeck.arm.rotation = 18 * (_mp3Channel.position / _mp3.length) - 4;

4 を引く理由は、範囲が -4 から 14 であるためです。

于 2013-03-03T02:25:39.877 に答える