00:00
接下来我们要做一个什么事情呢?现在我们歌词是有了吧,但是我们这个歌词做好过后,是需要他缓缓的往上走啊,就说注意啊,虽然是假歌词,但是他确实有时间,有内容,他应该是有权利往上走了吧,如果他往上走了,那我们再去解析真正的歌词自然就往上走了,对不对,就像我们开发的时候。服务器没选好,我们用假数据,这数据肯定跟服务器接口的数据一样,只是它可能数据有重复而已,是不是?那就是说现在我们点的话,我们要它缓缓的往上走,大家想一下。我们缓缓的往上走的话,是根据当前播放的位置不断去刷新页面就可以了。所以我这个时候要选个handle的了,是在这播放器里面选handle的的,这handle的有了吗?有了对吧,我们这个时候再去选一个语句,就是case,然后秀RCRC,然后后来bla好,那么把这哥们呢,把它给什么大写对吧,然后把它给创建出来对不对?好,这个是二好用来干嘛呢?显示歌词好,那其示歌词其实现在的音显上,其实我们最主要的就是让歌词缓缓往上。
01:31
往上推移对不对,推移走走,慢慢的往上走对不对。好,然后有了过后,有了过后这地方里面注意不要写,千万不要忘了这啊,这不忘记会导致什么bug对不对,好,这是显示歌词,然后缓缓往上这一对吧,这是要得到当前的进度啊,这个当进度是我们有啊把它拷贝来。然后有过后要不断去获取,当然这个地方呢,我们就要把它给这个去看去做好,这时候没办错了吧。
02:08
那有了过后呢,在这个里面好,这时候呢就有了,那么我们隔一段时间先发一下消息啊,剩的注意我们在发之前先沐浴消息啊,就木语。木麦,然后秀注意看有发就生的的空制消息,好注意我们需要休眠吗?同学们,我不我们不休,就是之前是休息一秒钟啊,那不休息我不延迟。但是我只要发这些文献都移除一遍,为什么呀?如果你频繁的网,因为相当于一个死循环吧,如果你把它消息如果发的对列太多了。这个收费导致整个系统卡死。
03:00
当时我们在联想的时候,做一做一个事件,就是诶只发消息,没有移出消息。当时花了我一天时间,我死活找不到。就是他你没有移除,会导致那个队列里面,队列里面占满,就像我们去食堂吃饭一样,如果两三个人排队。那很爽是吧,但是一万人来排队,那是感觉挤的不行了。是不是就不想吃了,是吧,就慢了,知道吧,就堵死了,所以要先什么移除,再发消息,一秒钟去执行次。然后有了过后呢,这个时候发消息与循环起来,那这个时候我们就要去拿到我们歌词显示控件叫LYR随做控件,然后set,就是设置显示我ne下一句的一个LY,其实下一个词吧。对不对,好,那把谁冲进去啊,大家有这个方法有了吗?没有把那个串出来。
04:05
好,这个是这个,这个是当前播放的位置吧,好,这是当前当音乐播放的位置,好,那这个地方有了过后,是不是我们一秒钟就就传这个进去就可以了,但是注意这个地方里面先播起来才去发这个消息,好那么播起来过后是在啊哦这个even文妹子里面,这时候我再去发这个消息啊好然后是的要延迟吗?肯定不需要延迟啊,巴不得立刻是吧,好发消息,那一发消息过后来到这里是不?他开始就什么去做这个事情了吧。好,那么它就是它这个参数其实就是我们的当前的部分位置,那这个方法它做的功能就是根据当前播放的位置,然后找出找出。
05:15
该高亮显示哪一句,该句剧的这个休眠时间,该剧的实力所他和我们的时间初探。要把那个什么计算出来,是这个方法的话,特有意思啊,特有意思,你看我现在在里面死循环,一直把当前位置传过来,存过后,你就要到这个列表中。去把这个歌词,你假如说当天我存一个时间进来,你要去找到底该高亮哪一句吧。
06:06
这时候肯定用到什么循环了。肯定用到什么循环呢。For循环嘛,你看我就讲了什么循环,你就以为就不是负循环了,就以为就循环了是吧,肯定是负循环了,就是吧,就外部循环也可以对吧,一般多循环是吧,好。那这个时候怎么做呢?对吧,首先我要判断你这个C这个集合如果等于空,我就该怎么办啊,我直接离了就不处理了,对不对,如果不为空,我才往下走啊好,那这个怎么走呢。其实假如说你存一个当前播放为零,那肯定显示D0句吧,好,那这时候我就要要做这样的一个事情了,做一个啊做一个什么呢?就是做一个负循环定的类型I。
07:09
以前我们I是默认从零开始啊,我说U盘从一句开始,为什么呢?U盘U盘盘减个。一过后才得到的邻居的信息,知道吧。好,因为从一开始,但大家你不要在意,就是这负循环一般是从零开始,但是我从一开始是有原因的啊,如果你不这么从一开始。你算法得变知道吧,当然你从零开始也行,但是麻烦代码不一定这么写,然后I小于什么啊,是小于就行了,小于谁的一个什么SI什么加加这问题吧,好,那有过后if,我们的当前的播放位置。它是小于我们的C,然后get他们的这个I。
08:04
然后它的时间点的,那这个的话呢。这个其实就就画出。画出。就是画出画。画画画出,那对于这个负循环啊,大家可能不理解,我画个图。假如说同学们这是一个列表,这第一句歌词就第零句啊,这个第二第一句第二句。啊,第三第四第五他们的位置,它的下标位置,它是零把一把二把三把四把,第五把,那也就是说我接下来从一个位置进来,假如我从那播放的位置。
09:04
现在存的位置比较小,就是它就是因为每一句的时间点是不一样的,那么假如说我存进来刚好是小于,因为第一次进来的时候,这个是第,这个是第一呀一的话,那么就是怎么样。小鱼,它那我取的是哪部分。点一句,你看如果你是一的话,你怎么取啊,如果是零的话,你怎么取,这一句我问你。为什么要等于?为什么要从一开始明白了吧。因为你小于它,你才能取掉它吧,要不录一个零,你想你取的是这边部分,你是不是啥没有啊。明白吗?所以从零开始,你看要结合实际就是算法了,相当于啊歌词同步里面有算法。好,这都是我研究出来的啊。最初是从别人拿代码出来,就是被别人写好了,后来呢,我理解了,我猜到就这么弄的啊,好,大家好。
10:02
在这个地方里面呢,是我现在接下来就现在是取这个区域了,这部分是不不是我们取的,这左边部分是我们取到的,好然后注意了,我呢,这里面有一个I的类型index,然后它等于I减一,这个I默认是一啊,这时它第一次进来,它应该变成多少了,零所取代就零居了,好这是我就判断了当前的应用,当前的位置,如果是大于或等于。我们刚才的这个。注意现在这I变成多少,这个好,而且这个变成是变成零了啊好大家看好,你按这个图,刚才是小于或等于它是这个区域了,接下来它是大于或等于是刚好就是取出它来了,诶。
11:04
诶是卡住他了。你看,你发现这人类太聪明了,他这么几分钟找一句是这么找。这很很牛啊,这算法就在这。那假如说我我举个例子,循环一变,空这个值变成多少?二那这个时候它接下来这个数量小于二。是到哪里啊这块区域吧,小于二,然后这个减一后就减一过后就是二减一后变成一啊一,那这个时候那就是这个位置它就取一是相当于就是它就大于就大于这个是就取这这这部分就取出来了,那就是说这个地方里面得到的是变成多少一对吧。变一过后,然后这个时候它就是当前的位置大于和等于,第一句这个这个值是变成一了,一因为这个这个碳不是变成一了,那就是大于不等于,你看首先又小于它小于这部分,那又大于它是刚好就什么。
12:09
是刚好就是一句就把第一句搞定了,所以每一句是都有机会取到啊,那如果你这个从零开始,那第零句有机会取到吗。水为什么从一开始了吗?当然这是一种算法,你可以不用这种算法,对不对,好,那这个时候有了过后注意在这里面这个下标其实就是我们的下标了吧,好,它就等于把外面的index,它就等于谁啊。Temp代词,这个就是我们歌词的什么所以啊,歌词下标什么所以好,那接下来是我们刚才说了,要求这个s sleep碳和这个时间上要要外界要用到啊,一会要绘制出来吧,好,就等于我们的这个列表。第二条,实力不太好,还有一个时间点。
13:09
好,LC,贝塔这个temp X,然后贝塔我们的时间点,好,那么我们可以用这音代词吗?它是一样的对不对?六态时间点这两个有显示类的前变量。好,这个是高亮时间,高亮高亮时间。这个是什么时间抽吧,是时间戳时间,说好就发现这个算法真是太有意思了,当我一弄明白,我觉得特别的幸福。
14:01
就人类怎么这么聪明,是不是可以把它找这个么,一句就把它副循盘找出来对不对。是不是啊,你看是这么着。当播放的进度我也找过一句搞两句,某一句你感觉太有意思了是吧?好,接下来有过后,那么我们找出来该搞的某一句过后。然后是我要绘制啊。怎么才会导致哪个方法废置执行呢?啊,哪个方法,这个方法会会什么,就是强制绘制,强制绘制为什么叫强制绘制啊,因为这个控件默认情况他已经绘制好了,你再绘制不强制了吗。懂意思吧,一个强或者说叫重绘也可以对吧,强制绘制其实就是会导致O什么就方法再次执行对不对,这是执行好。
15:11
那么在执行过后,如果我们现在去运行起来。大家可以看一下。再现在如果再去运行的话,它其实没有往往上缓缓的推移啊,可以看一下,先看一下,现在它呢,应该是没有动,就没有往上推移的。啊。它没有,它只跳动,但是没有缓的移动这个东西是吧,其实这样,其实这样的话也可以做到就是同步了,就是当当某月呢就跳过去。知道吧,但我觉得跳舞你看是跳了,但是没有没有像我们做好的,你看我们做好了,他会有有时候这样的一个。是不慢你移动啊,特别的温柔啊,是不是啊,但是其实对于我们歌词来说的话,我们就这样做,其实也满足了,就是说我们这个的话,它只是跳动嘛。
16:14
你看它一会会自动跳动,但是它在这个跳动过程中,它没有缓缓的往上移动吧,啊也是也自动自动的跳动啊,但是这个只能说是跳动频繁的往上移动,还没有做知道吧,要不这样我们频繁的这个移动呢,我们先别做,我们可以先把歌词解析出来,然后让你正式的歌词。去对应,然后再做平移,这样的话你会感受到原来是这么一个过程。好,我们就先就平移,我们先别说,就说呢,这个不是按理说要平移了吗?我们不做平移,我们先把歌词解析了。好吧,但是我们刚才所做的事情是计算该高到哪一句,对不对,所以这个方法是该计算该高到哪句啊,好保存一下。
我来说两句