00:00
好,接下来呢,我们来写将这个电影这一块能播放的这个功能啊给它实现了,我们这里面呢,就要借助一个库,这个库的名字叫做player,他呢可以喜欢guar搜一搜啊。叫做player。它呢目前呢使用的还是蛮多的,它的大量呢,还好有3000多个啊,它呢主要是在PC端兼容性还不错,在移动,在我们的移动端的话呢,也能够使用啊,也能够使用它这里面呢,有些基本的介绍,是不是有基本的介绍,然后呢可以看一下它的这个看一下啊。他呢,这里面是不是有好多中文的啊,这个库呢,是啊,国人开发的一个库啊,所以说呢,现在用的还是蛮不错的啊,是国人开发的货,那很多很多一些公司的话呢,他在使用在下面的给你介绍嘛。呃,看下面有没有介绍啊,这些东西呢,是不是在使用着我们的deep player啊啊有各大的一些论坛啊些网站一些什么啊,比例比例啊,B站啊什么的啊啊没怎么听过啊,咱们就好像B站最有名的是不是啊,在全世界呢,都范围都比较广啊好,那这是一些这样的网站啊,咱们不看,然后呢,它这里提供了一些API,一些插件等等啊,For各种东西的for view啊,View框架,For框架等等,那这个呢,是作为博客啊等等什么东西,它都会给你给你提供好了,你呢可以直接使用的,那这里面呢,还有一些API,可以直接做not去使用的一些东东啊,那我们呢,去看一下它这个中文文档,看一下怎么去使用的,打开这个中文文档。
01:47
好打开这个中文档呢,这里面来到了这个。嗯,这个文档上,然后呢,首先你要使用的话呢,你得下载是不是,那我们呢,就得先下载它,那当然呢,我们待会是不是在页面上使用啊,页面上使用你下载是没用的啊,现在不用下载,我们来看下怎么使用,在页面上使用的话呢,你得去引入一个CS,一样是引入一个Q标签,是不是还得呢写一个div,这个div呢,最终就是你生成的video标签,是不是就会生在这里面啊哎,咱们呢要引入两个SC啊,两个标签呢,那这两个标签呢啊,咱们呢能在bootrap里面找到啊。
02:27
在我们的CDN上找到,看这里面找CDN。啊,这里面搜不到,并不是说他没有啊,是因为这个网速实在是太渣了,他呢长得很慢啊,因为一开始呢,我们是不是搜过c two啊,发现它好像没有,其实有,因为我往下翻了一下啊,我就稍微翻了一下,诶,好像翻过头了吧,在哪呢?稍微翻了一下,我就发现是不是就在这啊,啊,就在这啊,其实有,只是我们那时候呢,嗯,去搜的网速不不好,那打开所有开源项目的列表,他们就会有所有的开源项目都在这啊,我们直接CTRLF去搜就可以了,Declareer对,是不是就在这啊,哎,这里就有打开它。
03:17
打开它之后呢,这里是不是有CS样,是有个Q标签啊,那我们记得把它给引入,复制这个地图标签,然后呢,来到我们这页面上,放到我们的这里啊,放在我们的这个BOO齿下面啊,放在BOO下面,然后下面是不是有个JS代码J呢,也放在我们BOO booru下面啊好放在这下面,好JS也引入了,接下来呢,我们是不是继续正式去写啊,我们呢去写个容器,它呢需要写容器是不是这容器的ID呢?看一下啊,这ID呢,当然你可以随便取,你可以随便取,那它呢这里呢叫做是deep player是不是,那我们也叫做deep player。好,接下来是不是要写script标签了,它呢,能通过,你看就是通过当你引入了这个JS文件全局就多了一个这样的构造函数,做大写的d player,是不是通过六它去传一个配置参数的话呢,你就能创建出来你要播放的东西了。
04:16
来看上面有一些相应的一些设置啊,第一个呢,是不是要告诉你那个容器是哪一个啊,第一个是容器,第二这个是啥呢。这个其实咱们见过干嘛呢。是否允许?截屏是不是啊,就是是否与截屏调为处可以,Video呢是干嘛的呢?你要播放的视频是什么是不是啊,地址是什么?它的分面图有什么,它的略缩图又是怎样的啊,这分面图跟这个图呢,可能会有一些不一样啊,这个图呢可能啊,比方说咱们是不是有竖屏和横屏有最大化最小化,可能它们显示的就不一样的啊,是这样的,然后呢,Sub title呢,这个是它的那个下面的那个外外挂的那个字幕,外挂的字幕啊,那咱们呢,应该用不着,因为我们video本身呢,它就带着这个字幕了,是不是不需要它,然后这是。
05:15
弹幕是不是他这里写错单词啊,他这写成弹码是不是啊,这个估计涉计的时候没没没没整明白啊,应该是弹幕是不是好,那反正这里呢就可以去,到时候发送弹幕呢,他就会走这下面这些逻辑,它会请求这个地址等等啊到时候呢,我们要实现的话呢,就得把这个地址呢,改成我们自己的地服务器地址是不是要改了,然后呢,再向走,我要走看下上面什么选项啊,这里面呢提供了一大堆选项啊,什么直播模式啊等等,什么自动播放啊,什么主题色,什么循环播放等等,什么是都给击可以设置啊,你全都可以设置啊,那你不想设置的话呢,也可以。不设置,那这些呢,我们就一不一个人过了啊,我们到时候用上的时候呢,再去一个个看到底怎么去使用的,它这里呢,提供的很多很多可选项啊,那我们呢,去写一个。
06:09
把这个给复制一份,我们要写JS代码了是不是?那我们要整块铝就能使用成整块铝,把它包装一层,整块铝这个函数是不是来放在这里面,我这里面呢,就生成了我这个弹幕的实际对象是不是好了,那在这呢,我们先写一个基本的一个东西啊,我这截屏呢,我用不着不截屏,那这里面是不是要放置着我那个呃,视频的地址啊,那咱们先写,咱们先写死啊,我们先写看一下能不能拿到我们写的结果,在这里面随便找一个图片,诶这里是个MP4文件,来右键复制外联是不是好把它给填写上去,好这里是不是图片的地址啊好,图片的地址的话呢,我呢。右键复制节发一个图片,那我这些图片呢,都放放死了,我先放这个图片,待会再来改啊,好,图片是不是也有了,这个是不是外挂的字幕啊,我也用不上这弹幕呢,我先这样放着啊,它呢会有一个默认的能够给你去使用的一个东西啊,默认就可以使用这个,我们看一下能不能来到我们想要的结果。
07:21
我的服务器呢,我没改代码,不需要重启,我只要刷新一下页面是不是就有了,咱们来刷下页面啊,因为呢,咱们咱们这个页面是不是没有使用GSSDK上面的任意的一些API没有使用是不是,所以说只要你没有使用的话呢,你就会在浏览器中任意调试,如果你使用的话呢,你就只能在我们的开发者工具中调试,是不是啊,只是两种方式啊,咱们没有使用就在这调试最方便了。刷新看一下服务器有没有问题啊,服务器没有问题。它呢一直在转是不是啊,说明咱们这网速呢。啊,不够不够给力啊,咱们呢,看一下服务器有没有出报错啊。
08:03
往下往放到最下面啊,服务器没有报错,如果最下面有报错的话呢,它会在这报错的,是不是没有报错的话呢,说明是没有问题的,他说响应时间过长是不是啊,这就是网速太慢了。啊,那咱们这网速实在是让人。很难受是不是,嗯,实在是。那接受不了这个网速啊,这个速度也实在是太慢了啊,返返回返回不了,是不是返返回不了,没关系,咱们呢带大家上另外一个地方家测试一下啊,我们呢,是不是有个静态页面啊,我们在静态页面给大家测试一下啊,然后呢,测试完成之后呢,我们再去写这个页面呢,我们下午看不到啊,这里一个思标签,除了L标签以外呢,我还得引入一个样式,是不是CTRLCCTRLC,然后呢,放到上面来。
09:00
Can't?好去也有了,最后呢,是不是要写一个JS代码,那咱们那也写上去CTRLC,诶整体这个标签全都给复制过去CTRLC,然后呢,放到最下面来CTRLV是不是好,咱们来看一下我们静态文件行不行啊,打开F12,好来看一下我们呢,是不是待会会生成啊,它呢进行了报错啊刷新下。他报的什么错呢?他说我这个class this啊是一个of是不是,诶咱们呢,看一下这个文件中是不是哪里写错了,我们是不是没有引入那个容器啊,容器没有引入啊,容器呢叫做deep declare。好,是不是这个容器好,这时候再来看一下,刷新一下页面,好这时候呢,他虽然报了错了,但这个是那个。弹的一些错误是不是这个不用管,但是我们看下有没有是不是有,是不是播放是不是好,也能够正常播放是不是没什么问题,当然呢,你也可以发送弹幕,但是看这个情况的话呢,应该是啊会报错,是不是报错的啊啊其实这里已经有显示了啊,只不过他呢,这里面它这个加载不了这个东西,说明呢,它现在还不支持你这个功能是不是好,不用关心啊好,咱们呢,现在呢,嗯,这个东西能实现了,哎,但是呢,你想。
10:32
每次我去点击这个东西的时候,它是不是会显示在最下面啊,那肯定是不行的是不是,而且呢,我们能让它一上来就下载这个东西呢,不行,要怎么样啊,是不是用户点击的时候才能加载好了,那我们得去写这个东西呢,当用户点击的时候才能加载,那我要给谁去绑定点击时间呢?干什么?给谁去绑定我用户应该是点击是点击这吗?不是是应该点击这样啊海报图片是不是点击这海报图片弹出来,那我就要去给所有的海报图片去把定世界,呃,咱们再看一下再给。
11:12
看看他能不能防。问到北大。好来看啊,正是因为我们是放到最下面,所以说呢,我们要滑滑滑滑,诶,它是在最最下面啊,那肯定是不行的,不可能用放到最下面才。这效果太差了,好咱们再回来,咱们是不是要点击这个东西的时候,应该要实现功能啊,那那咱们去绑定世界里面找到所有的这个图片的这个东西啊,图片在哪呢。诶是不是这个东东啊,Image图片是不是class,是不是这个CTRLC就找到它给它绑定。世界是不是点class点,可是不是好绑定世界里面绑定世界呢,我是不是在这里面要创建这个东东啊,好要创建它。
12:02
好,这样写没问题啊,但是呢,来刷新一开始的确没有加载是不是好,那你点击的时候我点。他家财了,但是呢,就在下面行吗?那肯定不行的,那该怎么办呢?大于呢,应该显示在哪屏幕正中间啊,那你肯定要显示在屏幕正中间才行,那你能怎么能显示在最下面呢?那怎么办呢,怎么办呢。哎,我们呢,再去看看不道看看它有什么组件可以用的啊,再去大家用用它上面的组件,它上面组件呢,提供的还是挺好用的啊,这里面其中就有一个组件呢,可能大家之前用过,叫做。模态宽有没有用过,这个态宽能做什么事呢?叫做来看什么组件啊,叫做,哎是不是个model啊啊好,这个模太框啊,当你点击的时候呢,诶不是这个我看下面点击的时候呢,它就不会弹出来啊,诶我就这样,当我点击的时候,是不是这个视视频就加载到这个弹框中,是不是,哎所以说呢,我们用这个模态框呢,比较好一点啊,既然用模台框的话呢,我们找一个比较好一点的啊,我们是不是在水平居中啊,哎,这里就是。
13:20
水平居中,点击它呢,它就会居中的,其实它不单是水平居中啊,它还是垂直居中的啊,所以说就用它好先把这个通通给引入一下,是不是就整体的这个div啊好,它是不是有个按钮触发,但是咱们呢就不写这个按钮了,咱们呢到时候去玛丁世界去触发它啊,好有这个东西呢,我们呢在下面去写一个。好,这上面东西太复杂了,我压根就用不着把它全都删掉,就有一个把我这个div给塞进去,是不是其他东西是不是都删完了,都删完了好待一会呢,我是不是要想办法去触发这个模态框啊,当我点击的时候,点击它的时候,是不是这个模态方要想办法显示出来,好,那我们看一下怎么显示模态方呢?往下走,下面呢,有自定义时间。
14:16
下下面有自定事件啊,往下走,哎,这里面有些自定事件。来看看,其实看一下你大概能懂。来这里面是不是说它要显示啊,这里说他要隐藏,看就这么简单,就是我们待会让它显示要调用这个在这里面呢,要去让这个模态框是不是显示模态宽显示要调这个方法好,这里面要注意,就是我这个ID呢,不一样啊,你要找到这个对应的ID。是不是这个ID啊,给它改一下啊,给它改一下才行,好,这时候我们看一下行不行啊,先看下行不行。呃,找这个点刷新一下。
15:01
好,现在有缓存的或者加载速度比较好,我点有可以是不是好,接下来呢,我们就要想办法实现的,我点击当前这个电影,是不是要显示的就是当前的电影啊,你不能给我落下。是不是,诶那这个怎么做呢?也就当我点击的时候,我要想办法拿到它对应的值,诶这就怎么办。我点击的时候是不是要给他动态加载这个视频跟这个封面图啊好了,那现在怎么办呢。我现在点击的时候,我里面有一个this,是不是我这是不是拿到大旗这张图片啊,但是你有张图片没用啊。你需要的是视频连接和那个卡连接是不是,但是你现在有吗。没有那怎么办,我点击的时候才能拿到这些东西呢。
16:01
怎么办?现在就有一个这样的问题,我点击的时候怎么拿到这个东西。拿不到的话,我就没办法加载,那我这功能就实现不了,我一定要想办法拿到这些东西,有什么办法呢。啊,这个呢,其实大家之前讲过啊,可能用的不多,忘记了啊,我们最多常见的场景就是我通过这里面,我每次点击的时候,我能拿到东西无非就是这只有它是不一样的,是不是它能代表每一个图片的那个动变动元素是不是,诶我们就想办法把那个动物元素上加。视频的地址加看的地址,这样我通过那个this是不是就能拿到我想要的东西了,是不是,那我怎么去给它们加呢。知道吗?想一想啊,怎么给他加,我应该加什么东西上去啊。
17:05
我给多米元素加长。是不是加我们所说的自定义属性啊,是不是我们加自定义属性,自定义属性的值我们是不是就可以拿到了,就能拿到了啊,也就是说这种方式呢,非常常见,在开发中啊,就是我们呢,要去获取这些相应的内容的话呢,我们会给他去加一些自定义属性。来。我们呢换个行,待会属性稍微有点多是不是,我们呢换个行啊,这里加自定属性通常是什么开头的啊,对他干开头的是不是,然后我要一个是不是看我K呀,那我就带他干cover k等于是不是那个地址,这个地址是不是到时候我要把它给。拼起来啊,叫做。除了还有什么?
18:02
还有一个key是不是视频的连接是最关键的,我是不是要啊,还有个video key,那我这个video key那也得。拿到是不是,哎,这两个东西,那我暂且先放这两个,那后面如果需要加的话,我再加是不是好,那有了这两个东西之后就好办了。好吧,啊,那我这里面是不是能通过this拿到想要的值啊。好,我现在就想获取这个视频和封面图的连接,怎么获取?怎么获取呢?视频连接啊,比方说叫做video video video就叫做video,它的连接怎么获取?首先给this包装一层整块对象,是不是它现在就是个整块的对象呢?整块的对象怎么去获取自定义属性呢?点诶来,哎,咱们是不是之前用过啊,点然后找那个VI do。
19:10
Key是不是,诶找这个就有了,同样的我的cover呢,也是如此,是不是找cover key找cover key是不是就来了,我来了啊好,有了这两个之后呢,我这里就不写词啊,我这里是不是写呀,Video啊,我下面是不是可写cover了,那我这两个呢,咱暂且都放。播放看播放看,咱们现在是不是就拿到了,拿到了现在我点击的时候就是不是就会动态的去加载我想要加载的视频跟图片啊,哎,这时候就行了,来刷新一下。我点,哎,还没下载完啊,我点。嗯,好像没加载出来一次。嗯,来刷新一下,是不是哪里出了问题。我播放一下。呃,是不是应该报错了?他说,呃,我先看看这个元素吧,有没有加载回来啊,我们找到这个image元素先传回去检查。
20:10
首先看下这个贝塔杠K有A,我这K是不是小写啊,但是我这里面写的是大写啊,所以说这两个错了,我把它改成大写。呃,就是说是,呃,哎。明明是大写的是不是,但是到页面上就变成了小写,哎,所以说注意一下这个问题,就是它这里会转换一下,是不是大家压根不认识你的大写是不是,所以说咱们也写成。小写的可以吧,咱们也写成小写的,否则是不是会出问题啊,那下面应该是BI Du是不是好,那么我们这里获取的时候呢,也要获取这个消息的啊,所以说有时候呢,并不是自己说的问题啊,检查一下就就有了,要解刷新下好我点。是不是可难啊,运行的话是不是也可以播放没问题,然后再往下走,下面是不是也可以也行,对不对,好,但是呢,我们会发现一个这样的问题啊来。
21:14
有了是不是来我们听一下第一个播放。是不是有声音啊?好,当我点击其他区域,是不是这个模态框会自动隐藏,隐藏的时候它还能播放吗?不能,但是呢。第三。是不是还在后台播放着,咱们在隐藏的时候应该要怎么办呢?应该怎么办?啊,其实就是把播放器暂停一下就可以了,也不用关闭,是不是暂停一下,暂停播放是不是就可以了,所以说呢,我们还得在模态消失的时候,是不是可以暂停播放啊,那么好,那来告诉我,我在哪里去做这件事呢?
22:04
看到啊,那么在哪里做件事?好在下面,哎,我哪知道他什么时候应该咋停,哪个时候是要播放啊。就是。啊,能不能用个flag去标识着是不是,诶咱们呢,来看一下啊,这个模态分呢,还有一个时间。还有世界啊,这个世界呢叫做是世界,世界的话呢,它就会根据某种状态是不是被触发啊,这里就有翻。啊,他呢?这种方法调用的时候,是不是会触发个事件,当它he害的方法调的时候,是不是会触发这个事件啊,诶所以说呢,当它一旦隐藏的时候,虽然诶虽然我们是不是点击其他区域,它自动的隐藏的,那它自动隐藏的说白了它内部能调的这个方法,所以说一旦那用这个方法是不是会触发这个事件,一旦触发这个事件,我是不是要去做,一个是停我那个播放器的播放啊是不是,那么我们看一下这里面有两个事件啊,一个是hi,一个是hit,它们对应的是不一样的,一个是这个方法调用的时候呢,会被立即出发,一个是当它隐藏完成。
23:17
才会触发,那咱们用哪个呢?咱们就用最下面这个吧,用它这个是不是,那它隐藏完成之后,是不是才会触发这个事件啊,才会去暂停,好,那我们就用这个。有时间呢,我们就绑定在可题可的外面啊,你千万不要绑定在可题可里面去了啊,好绑定在外面,在这里面我们要去暂停啊,咱们的播放器是不是视频播放器,好这里怎么暂停呢?我们来看啊,首先我这里是不是创建了这个DP实际对象啊,好,这个东西呢,应该定义在。说实话,他会。我先复制一下,我这里用去定义,因为待会去改变它的值,初始化用这个呢,是我的把视频播放器对象是不是,然后呢,在这里面呢进行。
24:14
是不是赋值啊,在这里面赋值好,一旦赋值之后呢,这个DB呢,我在这里面是不是可以拿到啊,它会读取外面的这个DB,这个变量是不是好,它呢,就有我们原生的视频的一些属性和方法,我们也看一下它支持它呢,在这里面其实给大家写出来了,文档上面写出来了啊。往下翻一翻,可能就能看得到,看一下哪里写了。啊,当然这里就告诉你暂停播放是这样的,跟我们原生的是不是一样的,它因为它在下面告诉你的,它能支持原声大多数的V接口,比如说像我们这些东西呢,它其实还能通过这个video是不是还能获取到啊,原生的大部分都能接收到啊,那我们这里是不是要调用这个pass方法暂停,那我们就将这个pass方法暂停一下这个。
25:02
好,此时此刻我们再验证一下,到底靠不靠谱啊,来把它调到最大是不是?来试一下,来到我们的A这个页面,刷新一下页面,好再来一个。啊。可以,那我点击其他区域是不是应该隐藏啊。点击有没有暂停有了是不是啊,当我再次点击的时候呢,是不是也可以播放啊,也可以播放好,那这时候没有问题好了,那在这呢,我们就写是不是啊,基本的功能实现了,是不是基本功能实现了,那我们呢,再去对细节呢,再做一些更好的处理一下啊对细节梳理一下,哪些梳理呢?我们当我们每次点击的时候在想,每次点击的时候是不是都会创建一个新的播放器对象啊,那就新的播放器对象,那必然会把之前的是不是给覆盖掉,那这样的感觉不太好。每次都创建一个新的啊,实际上呢,我只是第一次需要创建一个新的,我接下来是不是复用我这个新的就可以了,动用它就行了,所以说呢,我就不希望呢,每次都创建这个,那我在这里面应该怎么去处理呢?
26:12
你想我能判断,我有之前有没有创建过,我可以通过谁去判断。这个DB能不能判断出来?我之前是不是初始化文档啊,是不是一开始没有,一开始没有的情况下,那我是不是应该要。好,这样呢,一开始DB没有。一开始比如说取个反吧,一开始是DB没有啊,DB没有是不是要走这个逻辑啊,就要走这个逻辑,DB没有就要去创建爆发期对象。是不是那DB有了之后,我是不是想办法去做其他处理啊,那在这里呢,我们可以去做一个这式切换到。
27:00
其他视频可以做这个事啊,你切换到其他视频进后了,就没必要去重新创建了,是不是没必要重新创建了,他怎么切换呢?他专门提供一个方法啊,非常用的方法叫做呃,Switch video是不是切换到其中其他视频啊,啊就是这么切换的,调用这个方法来看,然后呢,首先第一个呢,是不是要传你这个地址啊好了,这个地址我应该传啥。啥?跟上面一一一样还是不一样?想想是不是一样的?一不一样,你想啊,当我每次点击的时候,是不是会产生新的this啊,是不是就是要显示我当前这个对应的这个video啊,一样吗?就是这个是不是我是不是当前点击这个this就会拿到我这个video视频,然后如果之前创建了,我是不是会走else啊,走else是不是就会切换到我这个视频连接啊,切换到当前视频链接就可以了,然后这里是不是把这个cover发上去。
28:06
然后发出去,然后下面是不是这个弹幕相关的东西啊,那这个呢,我们到时候再来看啊,到时候再看啊,这时候呢就会去切换了,当呢当然不会影响云功能是不是啊体现呢是差不多的啊,我们可以再看一下。呃,来到我们这里刷新一下,这我们功能呢,不会影响到太多,而且这个性能呢,因为我们现在目前来诶刷新一下,再刷新一下啊。我弟,哎,这时候是啥咋回事。嗯,咋回事呢?我这里是DB是不是,哎,怎么变成DB了,我应该是DP,是不是应该是DP啊,发现好点一下。好,其实你现在看不出来,是不是看不出来,但是呢,现在已经不一样了,它是不是下面会走这个切换视频啊,会走这切换视频,好这是这个啊,另外呢,我们还要再清楚一个。
29:05
你看当用户去反复的。播放是不是我再给你一个。他会做什么事呢?第次是个是切换一址。这样感觉也不太好,如果用户反复这样点的话呢,你是不是压根没必要做这种切换工作啊,你这无非就是让你这个视频是不是继续播放就行了,所以说呢,我们在这里呢,也处理一下这个问题啊,这个呢也是一个小小这个性能优化吧,那我们呢,将这个处理一下,我们呢就得去定一个变量来告诉我到底点击的是不是当前这个对象,是不是我们定一个变量,比如说定一个。什么呢?嗯,那是一个当前的。Let's flag啊,Flag它呢,代表是is。
30:04
当前的应该是哪个呢?当前应该是一次。应该不是闹啊,闹是现在是不是当前的单词应该怎样呢。Current是不是好is,当前的current就是这个单词啊,是当前的这个video is,当前radio,它默认之为。不对,这个东西呢,应该是。它呢应该存储一个值,它应该存储一个值啊,你想想啊,这它呢,待会呢,我呢要去点击的时候呢,我是不是要先记录一下我上一次播放的这个video视频是怎样的,我先记录一下,然后下次点击的时候呢,我是不是判断他们两个是不是同一个,如果是同一个说明他们点击的是同一个,那我就做其他处理,如果点击的是不同的,我是不是再去切换地址啊,所以在这里呢,我应该是记录着上一次的video啊,Last video吧,那默认值也是一个人默认也是,那我也不知道他是谁,是不是啊,这是记录。
31:16
上一次这个视频啊,进入上视频,那这里是模态宽消失时啊,出发的时间。那这个呢,是给每一个image图片绑定点击事件。好,接下来再来写啊,那我在这里面呢,当他点击的时候呢,我是不是要想办法把它给赋值啊,那我该在哪里进行赋值呢。我出有一个根不够判断呢,括号一个变量能不能判断出来。
32:01
是没办法判断,我是不是还得有个now啊,是不是在点击的时候,我实时保存一个now值,然后把now值跟这个是不是进行对比啊好,那这里呢,获取当前的这个视频。那么获取用什么变量去代表呢?获取什么比较好?啊,这里呢,比如说一个no获取个什么东西变量来去对比它们的不同呢。后成什么变量,大家想一想。那比方说咱们就用视频连接video吧,可以吧,是不是video每一个视频都不一样啊,那咱们就用视频连接,那我把它放到下面下面一点啊。那咱们视频连接是不是有video啊,那我就不要去进行额外的变量了,我就通过video数据进行判断,好判断的话呢,初始化的时候要判断的吗?我第一次要不要判断。压根没这种需求,是不是第一次你就老老实创建就行了,是不是else逻辑上我才判断啊,在这里面的判断。
33:05
啥呢?判断是否点击的是同一个视频,是不是好在这里面呢,我就判断if,如果这个video等等等于a video,说明他们点击的是同一个视频,是不是同一个视频呢?我们看一下做什么事。不同的视频是不是切换到其他视频啊,同一个视频呢,我要点击它是不是暂停了,我要把它给是播放一下,一下是不是好,这里呢,就是播放当前视频就好了。好,那这里面呢,就涉及到我这拉video是不是没有没有去同步这个状态啊,所以说我记得一定要同步一下,那不管它有没有成功呢,我在最后我都得做这个事,把last video呢,等于是不是等于video啊,我不管你是什么逻辑,你最终呢,你都给我同步一下,是不是你都给我加这个last video呢,等于这video,不管你是if还是else,是不是都得都得同步啊,都得同步啊好就在下面呢,去做一下这个是last video等于video就行了,就是同步这个。
34:18
同步值啊好,那到这一步呢,我们看一下行不行啊,其实这一步呢,就会实现一个这样的功能啊,它呢就相当于是一个断点续播一样的,那能够继续上一次的播放,好,但是呢,现在目前为止呢,咱们功能是写完了啊,但是呢,那网速呢又开始卡顿起来了,是不是啊,所以说我们现在测试起来可能比较麻烦啊,那这里呢,就是我们目前写的东西,目前写的内容,那剩下的呢,我们最后一个功能呢,就是这个。弹幕啊,这一块呢,会稍微比较麻烦,比较麻烦一些啊,那这个呢,我们到时候明天再来写啊,这个弹幕稍微麻烦一些,我明天再写,那晚上的时候呢,大家把我们这些功能呢,全部给写一写哈,好,然后另外写完之后呢,也给大家来一个小练习吧,就这里面我们之前是不是写了个测试页面啊,我们写了个测试页面,那大家呢,将我们的测试页面写一写,他们功能呢比较简单,我们呢,已经将语音识别不是都已经拿到结果了,结果都已经拿到了,那么请你根据这个结果向豆瓣去请求相应的定义数据。
35:31
哎,这功能跟谁有点像呢。咱们之前是不是有什么。什么语音或者文本输回复的一些东西啊,是不是也是发送请求,嗯,那请你呢,帮我写一个这样的请求,好,这里面请求对应的就要发送,待会就要发送请求了,是不是,那么我们这里面是不是啊用的是原声啊是不是,那如果你想用整的话,可以用整,然后使用整的方式去发也可以,你也可以写原生的方式发送请求,对不对?好,然后发送请求,最终呢,是不是要将你企求回的数据展示在页面上啊,那你展示一下,那在这里面呢,有一个小小的坑就是啊,你会发现你发送请求的数据拿不回来,它会报一个错。
36:20
报个什么错呢?报一个呃,Access control叫错误,什么错误呢?他说你背请求资源上啊,少一个头,少一个access control lock这个头说明什么呢?这个资源。他做了那个同源,就是你现在请求资源是不是受那个同源策略的影响啊,是不是产生了跨域啊,对不对,那你是不是要想办法解决这个跨域问题,咱们讲了两种,一种是dress b,一种是Co Co你能用吗?
37:01
你用不了啊,因为服务器在豆瓣上,你能怎么设置是不是,那么你只能使用JB,诶他刚好呢,就提供了JB供你使用,那使用JB呢,他要求你到时候要传,你到时候要请求那个连接啊,你记得要写个。Call back等于你最终的那个回调函数的地址是不是看那大家呢,回去再写一写,看自己能不能写下来啊,那这里面说了原生的方式呢,我们讲过同样的RY,它也提供这个方法。就多少点,第二。它是专门用来发送的,那么你们也可以究一下这个方法到底怎么使用,也可以看下啊,那我们呢,明天的时候如果讲的话,我们就使用JA会这种方法去发送,大家呢,去研究一下啊好,这些东西大家呢,晚上的时候把它看一看,那我们停一下。
我来说两句