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,但这是快速旋转手臂的方式。

谁能帮我指出正确的方向来解决这个问题?

非常感谢

更新 - - -

好的 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 回答