计算mp3长度各自的旋转

时间:2013-03-02 16:34:57

标签: actionscript-3 rotation audio

我试图创建一组转盘,我已经成功加载了一个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;

这是18和+14之间的差异,但这是快速旋转手臂的方式。

任何人都可以帮我指出正确的方向来解决这个问题吗?

非常感谢

UPDATE -----

确定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);

但我仍在努力将轮换与长度联系起来。

1 个答案:

答案 0 :(得分:1)

您可能不需要知道比特率来计算MP3的长度,因为Sound类具有length属性,以毫秒为单位报告长度。

SoundChannel类具有position属性,以毫秒为单位报告正在播放的声音的当前位置。

这意味着您可以根据[soundChannel].position / [sound].length计算轮换百分比并将其应用于轮换:

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

你减去4的原因是因为你的范围是-4到14。