我试图创建一组转盘,我已经成功加载了一个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);
但我仍在努力将轮换与长度联系起来。
答案 0 :(得分:1)
您可能不需要知道比特率来计算MP3的长度,因为Sound类具有length
属性,以毫秒为单位报告长度。
SoundChannel
类具有position
属性,以毫秒为单位报告正在播放的声音的当前位置。
这意味着您可以根据[soundChannel].position / [sound].length
计算轮换百分比并将其应用于轮换:
leftDeck.arm.rotation = 18 * (_mp3Channel.position / _mp3.length) - 4;
你减去4的原因是因为你的范围是-4到14。