做这个播放器的歌曲列表时,碰到了问题。歌曲名是从XML读入的动态文本,想做成下拉列表,一般都需要用遮罩。大家知道,动态文本想做遮罩,需要把字体嵌入,如果是英文字体还可以考虑,而我的歌曲名是包含中文的,嵌入中文字体将会把文件搞的非常大。于是我就用了一个变通的方法来解决这个问题。大概的思路是这样:
建一个MC(songName),MC中定义一个变量 songName = "";
并用一个动态文本显示这个变量。
在歌曲列表这个MC(listBox)中,放入7个songName,并分别命名为song1、song2……song7。这样,把歌曲名赋值给song1--song7中的变量songName就可以在listBox中显示7首歌曲了。
在主动画上我做了一个自定义函数listSong(n),它能控制listBox从当前专辑的第n首歌开始向下显示7首歌名。比如当前专辑中共有12首歌曲,那么执行listSong(3)将使listBox显示其中的第3-第9首。
做好这些准备,就可以回到listBox做下拉列表的action了。先把拖动条命名为dragBtn。在帧上为dragBtn加上能够被鼠标拖拽的action,这个相信大家都很熟悉。在拖拽的过程中,根据dragBtn的当前坐标,调用函数listSong(n)来控制显示哪些歌曲。比如dragBtn能够上下拖动的距离是100pix,共有12首歌,那么当dragBtn的位置在最顶部时,就应该显示第1-7首,向下拖动20pix,就调用listSong(2)显示第2-8首,向下40pix,显示第3-9首,以此类推。
好,这个下拉列表就算做完了。到这里,大家可能都明白了,其实在拖动过程中,只有拖动条自己在动,而列表内容只是根据拖动条的位置在刷新显示罢了。
把这一段程序的源文件提供给大家,做为参考,不足之处,望不吝指教。