WEB开发网
开发学院图形图像Flash FLASH打造LRC歌词播放器 阅读

FLASH打造LRC歌词播放器

 2007-01-03 10:53:38 来源:WEB开发网   
核心提示: 我们主要是要求出列表框项目移动的距离△S,然后求出列表框项目的位置.这时,可能会有读者问:那不就是要设置SHOWNUM个列表框的位置吗?从上面的分析可见,所有列表框项目的△S值是相同的,所以,我们干脆控制整个列表框的位置属性,根据匀速运动的公式,有△S=V*△T其中△T就是当前歌曲时间与歌

我们主要是要求出列表框项目移动的距离△S,然后求出列表框项目的位置.这时,可能会有读者问:那不就是要设置SHOWNUM个列表框的位置吗?从上面的分析可见,所有列表框项目的△S值是相同的,所以,我们干脆控制整个列表框的位置属性。

根据匀速运动的公式,有

△S=V*△T

其中△T就是当前歌曲时间与歌词时间信息的差值,即当前时间(T-15.84).那么V怎么求呢?

我们刚才说了,在两句歌词的时间差里,我们需要移动一个列表框项目的距离S,代入上述公式,得

S=V*(21.18-15.84)

V=S/(21,18-15.84)

解出了V以后,就可以把距离跟时间的关系写出来:

△S=S/(T-15.84)*(21.18-15.84) (其中S为常数)

把该函数用于AS中:

S就是一个列表框的高度itembutton0._height,15.84就是以当前歌词位置TEMPPOS为下标的数组项的值timeValue[temppos],21,18就是当前歌词下一项的时间信息值timeValue[temppos+1],当前歌曲位置T就是歌曲位置pos/1000(因为上面设置了pos=_parent.song.duration,而duration是以毫秒为单位的,TIMEVALUE数组是以秒为单位,所以需要转换一下单位)

于是,控制列表框位置的代码就写出来了:

delta=itembutton._height*(pos/1000-timeValue[temppos])/ (timeValue[temppos+1]-timeValue[temppos]);

该代码添加在MOVEUP函数里。然后列表框的位置就等于列表框初始值减去DELTA(因为往上为负,所以是减)。

为了获得初始值,在MOVEUP函数的外面追加:

inity=_y

接着就可以在MOVEUP函数里追加:

_y=inity-delta

此时,测试影片,就可以看到平滑移动的效果了.但是,当歌词高亮显示发生改变的时候,你会看到列表框上面一项突然消失,同时下面弹出下一项.这个该怎么消除呢?

上一页  5 6 7 8 9 10 

Tags:FLASH 打造 LRC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接