2013-03-02 64 views
0

我试图创建一组转盘,我已经成功加载了一个mp3并可以播放它,现在在我的转盘movieclip中,我有另一个用于手臂的movieclip,可以轻松改变旋转。计算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 -4和+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); 

但长度IM仍然在努力转动拴在长度。

+0

是什么原因你的问题真的是“如何确定MP3文件的(时间)长度?”。 – 2013-03-02 16:36:41

+1

如果你的mp3有可变比特率VBR,这个计算将无法工作 – M4tchB0X3r 2013-03-02 16:42:13

+0

@OliCharlesworth不,我已经成功计算了长度。我的问题是,如何让我的手臂旋转从-4到+14的时间,它需要加载的MP3播放 M4tchB0X3r你可以解释更多一点。如果我键入_mp3。没有可变比特率的codehint。 – AndrewBramwell 2013-03-02 16:47:27

回答

1

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

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

这意味着,你可以计算出旋转的基础上[soundChannel].position/[sound].length百分比并应用到旋转:

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

你减去4是因为你的范围为-4〜14

+0

你我的好先生是个传奇人物!不得不调整最后一个数字,因为我得到的旋转错误,但这个工程!谢谢! – AndrewBramwell 2013-03-03 11:59:30

+0

很高兴为您效力!祝好运与项目的其余部分。 – Marcela 2013-03-03 18:56:09