dplayer js控制 自动全屏_vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】...

最近公司的产品上线,一些高级功能在基础版本中不对用户开发,通过视频的形式展示。

产品开发用的是 vue, 经同事介绍使用了vue-video-player视频播放插件,通过 demo案例很快实现了视频播放效果

class="vjs-custom-skin"

ref="videoPlayer1"

:options="playerOptions"

:playsinline="true"

:events="events"

@play="onPlayerPlay($event)"

@pause="onPlayerPause($event)"

@ended="onPlayerEnded($event)"

@loadeddata="onPlayerLoadeddata($event)"

@waiting="onPlayerWaiting($event)"

@playing="onPlayerPlaying($event)"

@timeupdate="onPlayerTimeupdate($event)"

@canplay="onPlayerCanplay($event)"

@canplaythrough="onPlayerCanplaythrough($event)"

@ready="playerReadied"

@statechanged="playerStateChanged($event)">

老板看了之后说: '不需要全屏切换,不需要让用户看的那么仔细',

通过配置项 controlBar: {fullscreenToggle: false},关闭全屏切换后,由于视频标清、展示区域大小 483px X 303px,根本看不清视频里内容,老板又说:"实现全屏不铺满整个屏幕,而是通过固定大小的弹出层展示"

首先想到的是: 开启全屏切换,监听全屏切换的事件,在事件中强制退出全屏,显示固定大小的弹出层

...

:events="events"

@fullscreenchange="onPlayerFullScreenchange($event)"

...

>

// 需要在 events 中指定全屏切换事件,不然无法监听

data () {

return {

videoDialogVisible: false, // 控制弹出层

events: ['fullscreenchange']

}

},

methods: {

...

onPlayerFullScreenchange (player) {

player.exitFullscreen() //强制退出全屏,恢复正常大小

this.videoDialogVisible = true

}

...

}

这种办法,虽然能实现,但在强制退出全屏那一下,整个页面会跳一下,碰到网速慢,或电脑卡的情况,效果更差...

没办法,继续想办法,在该插件 GitHub 库中,有网友提过相关 issues , 通过 注册一个自定义按钮组件,添加到播放器的 controlBar中,替换默认的全屏切换按钮

import * as videojs from 'video.js'

export default {

...

methods: {

...

createMyButton () {

let Button = videojs.getComponent('Button')

let myButton = videojs.extend(Button, {

constructor: function (player, options) {

Button.apply(this, arguments)

this.addClass('fullscreen-enter')

},

handleClick: () => {

// 绑定点击事件

},

buildCSSClass: function () {

return 'vjs-icon-custombutton vjs-control vjs-button'

}

})

//注册

videojs.registerComponent('myButton', myButton)

this.$nextTick(() => {

// 添加到controlBar中

this.$refs.videoPlayer1.player.getChild('controlBar').addChild('myButton')

})

}

...

}

}

// 在 style 中指定自定义按钮样式

.video-js{

.vjs-control-bar{

.vjs-icon-custombutton {

font-family: VideoJS;

font-weight: normal;

font-style: normal; }

.vjs-icon-custombutton:before {

content: "\f108";

font-size: 1.8em;

line-height: 1.67;

}

}

}

}

自定义的按钮图标用的还是默认的全屏图标,接着得实现按钮的点击事件

页面和弹出层中分别是俩个 播放器实例 videoPlayer1, videoPlayer2,需要考虑到的是:当自定义切换事件触发后,俩个播放器的同步( videoPlayer1播放了10s, 全屏切换后,videoPlayer2得从 10s 继续播放,而不是从头播放 )

onCustombuttonClick () {

let _time = this.$refs.videoPlayer1.player.currentTime() //已播放时长

this.$refs.videoPlayer2.player.currentTime(_time)

this.$refs.videoPlayer2.player.play()

}

同理:关闭弹出层后, 也得把 videoPlayer2 的播放时长 赋值给 videoPlayer1,此处是通过 监听弹出层显示、隐藏等事件来实现

总结

以上所述是小编给大家介绍的vue-video-player 通过自定义按钮组件实现全屏切换效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新闻发布项目——实体类(comment)

package bdqn.newsMange.entity;import java.util.Date;/*** 新闻评论表*/ public class comment {private int commentID;//编号private String cmmUser;//用户名private String ip;//ipprivate String cmmContent;//内容private int newsID;//新闻IDprivate Date cmmDate;//…

java字符串格式化:String.format()方法的使用

转载自 java字符串格式化:String.format()方法的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的读者应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。 l for…

java web每天定时执行任务(四步轻松搞定)

https://www.cnblogs.com/LiSheng97625/p/4648739.html java web每天定时执行任务(四步轻松搞定) 第一步: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44…

从Unity3D编译器升级聊起Mono

接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识。 Unity3D的编译器升级 新升级的Mono C#编译器(对应Mono 4.4) Unity编辑器及播放器所使用的Mono运行时还未升级。 新编译器仍针对C# 4,是旧的编译器也支持的版本。 …

bat脚本中获取上级目录_批处理bat命令--获取当前盘符和当前目录和上级目录

批处理命令获取当前盘符和当前目录%~d0 是当前盘符%cd% 是当前目录可以用echo %cd%进行打印测试以下例子是命令行编译Visual Studio编写的程序:echo offset b%cd% //将当前目录保存到参数b中,等号前后不要有空格C:cd program filescd microsoft visual studiocd com…

日期类的加减及java中所以日期类的操作算法大全

转载自 日期类的加减及java中所以日期类的操作算法大全1.计算某一月份的最大天数Calendar timeCalendar.getInstance(); time.clear(); time.set(Calendar.YEAR,year); //year 为 int time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0 int daytime.getActu…

使用Spring的@Scheduled实现定时任务

https://blog.csdn.net/prisonbreak_/article/details/49180307 使用Spring的Scheduled实现定时任务 2015年10月16日 16:23:21 阅读数:103485更多 个人分类: Java开发 Spring配置文件xmlns加入 xmlns:task"http://www.springframework.org/sch…

新闻发布项目——实体类(categoryTB)

package bdqn.newsMange.entity; /*** 新闻类别实体类* author Administrator**/ public class categoryTB {private int categoryID;//编号private String categoryName;//类别名public int getCategoryID() {return categoryID;}public void setCategoryID(int categoryID) {…

.NET Core 系列5 :使用 Nuget打包类库

NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中…

foxmail 不知道这样的主机_华为P50真机图!网友:早知道这样,就不加价买mate40了...

hello,大家好,欢迎收看本期节目由于各方面原因,今年的华为mate40系列确实很难抢不少心急的用户甚至是加价买了入手之后有的用户有开始后悔了,当然不是该机不好而是他们看到了疑似华为P50的真机渲染图它的正面并没有丑陋的双打孔&a…

F#年度调查结果概述

本文要点 年度社区调查向600多名开发人员了解了他们的F#使用情况;在工作中,F#的最大好处包括正确性、让不合法状态不可达以及能够更轻松地解决复杂的问题;大多数F#开发人员仍然使用Windows作为他们的开发平台之一,但使用Mac和Linu…

java Date获取 年月日时分秒

转载自 java Date获取 年月日时分秒 package com.util;import java.text.DateFormat; import java.util.Calendar; import java.util.Date;public class Test {public void getTimeByDate(){Date date new Date();DateFormat df1 DateFormat.getDateInstance();//日期格式&…

anroid 内存溢出 Bitmap OutOfMemoryError

Bitmap OutOfMemoryError 2014年06月09日 09:55:28 阅读数:2434 标签: OutOfMemoryErrorBitmap回收 更多 个人分类: 异常问题和解决办法 在创建Bitmap的时候由于对象过多而没有即使回收,导致的内存不足: java.lang…

wxml报错原因_C#生成、解析xml文件以及处理报错原因

转载自:http://blog.csdn.net/lilinoscar/article/details/21027319简单的介绍一下生成XML文件以及解析,因为有些数据不一定放到数据库,减少链接数据库用xml还是比较好些。如果遇到问题也就是解析时报错,对于解析,可以…

新闻发布项目——接口类(UserDao)

package bdqn.newsMange.Dao;import java.util.List;import bdqn.newsMange.entity.User;/*** 用户信息接口* author Administrator**/ public interface UserDao {//查询public List<User>getAllUesr();//添加public int addUser(User user);//修改public int updateUse…

替代反射调用的几种方式及性能测试

园子里和这个话题的相关文章比较多&#xff0c;本文是旧话重提&#xff0c;外加个小的总结。主要因为近期看到很多同事、朋友都已经使用 VS2012 进行 .NET 4.5 开发了&#xff0c;却还在大量使用反射&#xff0c;不知道用新的方式。或有所了解&#xff0c;但又害怕性能不好不敢…

JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库

转载自 JAVA解析html文档&#xff0c;替换img图片路径成base64编码&#xff0c;并将文章存入数据库开发环境&#xff1a;struts2 spring hibernate 数据库:oracle 需求&#xff1a;在HTML编辑器中输入文章&#xff0c;传入后台&#xff0c;文章中所有图片路径&#xff0c;转换…

Android Bitmap OutOfMemory 解决办法

Android Bitmap OutOfMemory 解决办法 置顶 2014年07月01日 14:41:22 阅读数&#xff1a;3072 标签&#xff1a; OutOfMemoryBitmapandroid图片优化更多 个人分类&#xff1a; 异常问题和解决办法 在Android应用里&#xff0c;最耗费内存的就是图片资源。而且在Android系统中…

为什么光标停在表格中间_word里面为什么打出来的数字中间为啥差一个光标的距离 - 卡饭网...

为Word宏添加VBA项目的数字证书签名为Word宏添加VBA项目的数字证书签名 用户在使用Word编辑文档时可以借助Word宏命令提高工作效率。在默认情况下&#xff0c;Word宏的安全性设置为“高”&#xff0c;当运行Word宏命令时会自动禁用宏。如果将Word宏安全性设置为“中”&#xff…

Java8学习笔记(1) -- 从函数式接口说起

转载自 Java8学习笔记&#xff08;1&#xff09; -- 从函数式接口说起希望本文能够成为Java8 Lambda表达式的快速入门指南。 函数式接口 理解Functional Interface&#xff08;函数式接口&#xff0c;以下简称FI&#xff09;是学习Java8 Lambda表达式的关键所在&#xff0c;所…