请教夕阳老师:如何控制这个动图、添加这个视频?[已解决]
本帖最后由 杨帆 于 2024-12-10 23:16 编辑 <br /><br /><div style="position:absolute;z-index:32768;background:none;width:100%;left:80px;margin-top:50px;"><center><IFRAME src="https://file.uhsea.com/2412/de21e7ba990849ef5c9de7989eb716f4OK.html" width="1600" height="1000" marginWidth="0" marginHeight="0" frameBorder="0" scrolling="no" allow="fullscreen"></IFRAME></center></div><div style="height:1000px"></div><BR><BR><BR><BR><BR><BR><BR><BR><BR>@夕阳黄昏夕阳老师您好:
在本地预览,除了动图控制不了,其余正常
不知为何发到论坛就全部失效了
请给于指导!由衷感谢~ 还有,歌词预览在左下,咋发在论坛就跑到了左上呢? 杨帆 发表于 2024-12-1 13:05
@夕阳黄昏夕阳老师您好:
在本地预览,除了动图控制不了,其余正常
此帖正常显示需要三部分代码: CSS、HTML 以及 js
而在此帖中没有 js 代码所以所有动态全部失效,CSS代码部分混入了多余的代码导致歌词跑到上面去了。
我估计发帖时没把本地代码全部拷上故缺失了全部的js代码。
另外,发帖步骤可能也存在问题。 夕阳黄昏 发表于 2024-12-1 13:43
此帖正常显示需要三部分代码: CSS、HTML 以及 js
而在此帖中没有 js 代码所以所有动态全部失效,CSS代 ...
知道了,我再试试,谢谢夕阳老师{:4_191:} 还有一个问题请教:
为何在本地测试,用之前的办法也不能控制动态图呢?
该如何控制呢?谢谢夕阳老师@夕阳黄昏 杨帆 发表于 2024-12-1 14:18
知道了,我再试试,谢谢夕阳老师
4#代码第二行 @import url(https://file.uhsea.com/2403/f45f ... 3eae6fa88eb78YS.css);
应该是发帖时被破坏了,正确的是 @import rl(https://file.uhsea.com/2403/f45f79bba93cd62f8603eae6fa88eb78YS.css);
改正后大部分功能会正常。
这帖子的代码相对有些复杂,搞清楚各部分的作用还需要理顺它们之间的相互关系才能全部正常,这功夫大概和重新做一遍差不多。
夕阳黄昏 发表于 2024-12-1 16:27
4#代码第二行 @import url(https://file.uhsea.com/2403/f45f ... 3eae6fa88eb78YS.css);
应该是发帖时 ...
好的,知道了,谢谢老师{:5_114:} 没仔细琢磨,凑合着调整了一下
<style>
@import url(https://file.uhsea.com/2403/f45f79bba93cd62f8603eae6fa88eb78YS.css);
:root {--rState:running;}
/** 不满意一般设置也可以调整下 **/
#papa {
position: relative;
width: 1400px;
height:750px;
background-color: #000000 ;
overflow:hidden;
margin: 130px 0 30px calc(50% - 780px);
box-shadow: 4px 4px 10px #000;
}
#testImg{position: absolute;width:80%;height: 90%;z-index: 4;mix-blend-mode:darken; }
.lrcShow {
font:normal 3em 华文新魏;
font-weight:200;
color: #000080;
white-space: pre;
-webkit-background-clip: text;
z-index:10;
filter:drop-shadow(#FFFFFF 1px 0 0)drop-shadow(#FFFFFF 0 1px 0)drop-shadow(#FFFFFF -1px 0 0) drop-shadow(#FFFFFF 0 -1px0);
}
.lrcShow::before { position: absolute;width: 20%;height: 100%;color: transparent;overflow: hidden;white-space: pre-webkit-background-clip: text;
}
zxx-slide {
width: 100%;
height: 100%;
position: absolute;
}
.zxx-slide-a {
position: absolute;
cursor: default;
pointer-events:none;
}
.zxx-slide-a.in {
z-index: 1;
animation-duration: 2s;
animation-name: tilt-in-fwd-tr;
transition: 1s;
}
.zxx-slide-img {
width: 100%;
height: 100%;
}
/**
* ----------------------------------------
* animation tilt-in-fwd-tr
* ----------------------------------------
*/
@keyframes tilt-in-fwd-tr {
0% {transform: rotateY(20deg) rotateX(35deg) translate(300px, -300px) skew(-35deg, 10deg);
opacity: 0;
}
100% {transform: rotateY(0) rotateX(0deg) translate(0, 0) skew(0deg, 0deg);
opacity: 1;
}
}
#processMeter{
position: absolute; right:1%; bottom:6%; width: 200px; height:100px; z-index:5;}
#mPlayer{transform-origin:50%;cursor: pointer;animation: rot 5s linear infinite var(--rState);}
@keyframes rot {to {transform:rotate(1turn)}}
#fullscreen { position: absolute; top:5%; left:83%;color:#ffffff; filter:drop-shadow( 1px 1px 1px #000000);font: normal 2.2em华文新魏; opacity: 1; cursor: pointer; z-index: 1660}
</style>
<div id="papa">
<img id="testImg" src="https://xlaj.cn/upfile/202411/27/fn.gif" style="top:30px; left:200px;" />
<zxx-slide>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660941589f345e8d038131b5.jpg"> </a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ed9f345e8d03a52abd.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ed9f345e8d03a52e06.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660946239f345e8d03a6afeb.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ee9f345e8d03a535bb.jpg."></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ee9f345e8d03a531e6.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660946229f345e8d03a6accb.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/66095b059f345e8d03546b8e.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ed9f345e8d03a52e06.jpg"></a>
</zxx-slide>
<div id="processMeter">
<svg stroke-width="5" viewBox="0 0 200 100" id="svgObj">
<path id='bgc' d="M 100 5 A 95 45 0 0 1 100 95 A 95 45 0 0 1 100 5" stroke="#ebeef5"fill="none" ></path>
<path
class="process-circle"
d="M 100 5 A 95 45 0 0 1 100 95 A 95 45 0 0 1 100 5"
stroke="darkred"
fill="none"
stroke-dasharray="455"
stroke-dashoffset="455"
></path>
<defs>
<clipPath id="clip">
<circle cx="100" cy="50" r="41" />
</clilpPath>
</defs>
<image xlink:href="https://pic.imgdb.cn/item/6723214fd29ded1a8cfe28f1.png" id="mPlayer" width="95" height='95' x="50" y="0" clip-path="url(#clip)" preserveAspectRatio="none" />
<text x="85%" y="50%" stroke="lightgray" text-anchor="middle" dominant-baseline="middle" stroke-width="2" style="font-size:13px;" id="durTime"> </text>
<text x="15%" y="50%" stroke="lightgray" text-anchor="middle" dominant-baseline="middle" stroke-width="2" style="font-size:13px;" id="curTime"> </text>
</svg>
</div>
<div class="lrcShow" data-lrc="牧羊曲" >牧羊曲</div>
<span id="fullscreen">全屏观赏</span>
</div>
<script>
const processCircle = document.querySelector('.process-circle');
// 获取圆的周长
const circumference = processCircle.getTotalLength();
// 把周长赋值给 strokeDasharray
processCircle.style.strokeDasharray = circumference;
function setProcessCircle(percent = 0) {
// 动态计算 offset 赋值给 strokeDashoffset
// 为了支持 percent = 0 | '0%',所以使用 parseInt 转换
processCircle.style.strokeDashoffset =
circumference * (1 - parseInt(percent) / 100)
}
var sf0 = document.createElement('script');
sf0.type = 'text/javascript';
sf0.src = "https://file.uhsea.com/2410/739c572b5176f670f350463cf9ade957QB.js";
sf0.charset = "utf-8";
document.body.appendChild(sf0);
sf0.onload = () => {
let lrctxt = `
牧羊曲 - 郑绪岚
词:王立平
曲:王立平
日出嵩山坳
晨钟惊飞鸟
林间小溪水潺潺
坡上青青草
野果香山花俏
狗儿跳羊儿跑
举起鞭儿轻轻摇
小曲满山飘满山飘
莫道女儿娇
无暇有奇巧
冬去春来十六载
黄花正年少
腰身壮胆气豪
常练武勤操劳
耕田放牧打豺狼
风雨一肩挑一肩挑
风雨一肩挑一肩挑
一肩挑
`;
let opts = {
lrcTxt: lrctxt,
audioURL: "https://file.uhsea.com/2411/084853c28b242814a04e290ed762dd8c1V.mp3",
}
let player = new lrcPlayerY(opts);
let circlePoints = [];
let bgcLen = bgc.getTotalLength();
for (let i = 0; i < bgcLen; i++) {
circlePoints.push(bgc.getPointAtLength(i));
}
//console.log(circlePoints);
var eleZxxSlides = document.querySelectorAll('zxx-slide');
[].slice.call(eleZxxSlides).forEach(function(container) {
var timerSlide = null;
var indexSlide = 0;
// 对应的元素
var eleSlides = [].slice.call(container.querySelectorAll('a'));
var eleButtons = [].slice.call(container.querySelectorAll('button'));
var funSlide = function() {
eleSlides.forEach(function(slide, index) {
if (!player.mObj.paused) {
if (indexSlide == index) {
slide.classList.add('in');
} else if (slide.classList.contains('in')) {
slide.classList.remove('in');
}
}
});
timerSlide = setTimeout(function() {
indexSlide++;
if (indexSlide == eleSlides.length) {
indexSlide = 0;
}
funSlide();
},
12000);
}
indexSlide++;
setTimeout(funSlide, 12000);
});
let formatTime = (time) => {
let str = '';
let min = parseInt(time / 60);
let sec = parseInt(time % 60);
return ((min < 10 ? '0' + min: min) + ":" + (sec < 10 ? '0' + sec: sec));
};
player.mObj.addEventListener('timeupdate', function() {
let processValue = player.mObj.currentTime / player.mObj.duration;
processCircle.style.strokeDashoffset = circumference * (1 - processValue);
durTime.textContent = formatTime(player.mObj.duration);
curTime.textContent = formatTime(player.mObj.currentTime);
});
mPlayer.onclick = () => {
player.mObj.paused ? (mPlayer.style.setProperty('--rState', 'running'), player.mObj.play()) : (mPlayer.style.setProperty('--rState', 'paused'), player.mObj.pause());
}
let seeking = false;
let moveEventProc = (event) => {
if (!seeking) return;
let thePoint = 0,
minV = 100;
circlePoints.forEach((point, idx) => {
let mx = (point.x - event.offsetX),my = (point.y - event.offsetY) ;
let mv = mx * mx + my * my;
if (mv < minV) {
minV = mv;
thePoint = idx;
}
});
let chkVal = thePoint / circumference;
let chkTime = player.mObj.duration * chkVal;
processCircle.style.strokeDashoffset = circumference * (1 - chkVal);
for (i = 0; i < player.lrcVec.length; i++) {
if (player.lrcVec.seconds >= chkTime) {
//console.log(player.lrcVec.seconds, i);
player.idx = i;
player.mObj.currentTime = chkTime;
break;
}
};
};
processCircle.addEventListener("mousemove", (event) => moveEventProc(event));
bgc.addEventListener("mousemove", (event) => moveEventProc(event));
processCircle.onclick = bgc.onclick = () => seeking = !seeking;
let fs = true;
fullscreen.onclick = () => {
fs ? (fullscreen.innerText = '退出全屏', papa.requestFullscreen()) : (fullscreen.innerText = '全屏欣赏', document.exitFullscreen());
fs = !fs;
};
var mState = () => {
papa.style.setProperty('--state', ['running', 'paused'][ + player.mObj.paused]);
player.mObj.paused ? image0.stop() : image0.play();
};
player.mObj.oncanplay = player.mObj.onplaying = player.mObj.onpause = () => mState();
mPlayer.onclick = () => player.mObj.paused ? player.mObj.play() : player.mObj.pause();
mPlayer.style.animationPlayState = player.mObj.paused ? 'paused': 'running';
player.mObj.addEventListener('playing', () => mPlayer.style.animationPlayState = 'running');
player.mObj.addEventListener('pause', () => mPlayer.style.animationPlayState = 'paused');
// 控制图片的代码
if ('getContext' in document.createElement('canvas')) {
HTMLImageElement.prototype.play = function() {
if (this.storeCanvas) {
// 移除存储的canvas
this.storeCanvas.parentElement.removeChild(this.storeCanvas);
this.storeCanvas = null;
// 透明度还原
this.style.opacity = '';
}
if (this.storeUrl) {
this.src = this.storeUrl;
}
};
HTMLImageElement.prototype.stop = function() {
var canvas = document.createElement('canvas');
// 尺寸
var width = this.width,
height = this.height;
if (width && height) {
// 存储之前的地址
if (!this.storeUrl) {
this.storeUrl = this.src;
}
// canvas大小
canvas.width = width;
canvas.height = height;
// 绘制图片帧(第一帧)
canvas.getContext('2d').drawImage(this, 0, 0, width, height);
// 重置当前图片
try {
this.src = canvas.toDataURL("image/gif");
} catch(e) {
// 跨域
this.removeAttribute('src');
// 载入canvas元素
canvas.style.position = 'absolute';
// 前面插入图片
this.parentElement.insertBefore(canvas, this);
// 隐藏原图
this.style.opacity = '0';
// 存储canvas
this.storeCanvas = canvas;
}
}
};
}
var image0 = document.getElementById("testImg");
}
</script>
夕阳老师好,此帖是学习您的《北京的秋天》,不清楚加入gif动图后为何就控制不了呢?@夕阳黄昏 夕阳黄昏 发表于 2024-12-1 18:22
没仔细琢磨,凑合着调整了一下
哇,夕阳老师您太强大了!折腾我几天的两只小鸟终于被搞定了!
只知道代码调整好多,但不清楚是否具有普适性?
无论如何,由衷感谢老师,因今晚我终于可以睡个好觉了@夕阳黄昏 本帖最后由 杨帆 于 2024-12-10 23:24 编辑
老师您好@夕阳黄昏 加了个视频,发现小播不能点击了呀,咋整呢?谢谢{:4_191:} 杨帆 发表于 2024-12-1 21:14
老师您好@夕阳黄昏 加了个视频,发现小播不能点击了呀,代码见楼上,咋整呢?谢谢
至少第二行又出老毛病了{:5_102:}
发帖的步骤:高级模式 --> 纯文本 --> 附件选项 --> HTML 代码 --> 禁用链接识别 --> 填写帖子名称 --> 粘贴帖子代码 --> 发表帖子
按这个步骤来,正确的代码是不会出错的。 杨帆 发表于 2024-12-1 21:14
老师您好@夕阳黄昏 加了个视频,发现小播不能点击了呀,代码见楼上,咋整呢?谢谢
几个问题:
1. 第二行 老毛病,有了昨天的经验一眼就看出来了;
2. 84行 z-indx:1660, 这个也太大了,就是它的原因导致控制失灵(被遮挡住了);
3. 飞鸟动态图片好像是私人所有,不希望别人使用,现在链接也失效了;
4. 如果只是为了展示帖子,建议使用马黑现成的封装好的代码,功能全还不易出问题。 <style>
@import url(https://file.uhsea.com/2403/f45f79bba93cd62f8603eae6fa88eb78YS.css);
:root {--rState:running;}
/** 不满意一般设置也可以调整下 **/
#papa {
position: relative;
width: 1400px;
height:750px;
background-color: #000000 ;
overflow:hidden;
margin: 130px 0 30px calc(50% - 780px);
box-shadow: 4px 4px 10px #000;
}
#vid2 {
position: absolute;
left:0px;
bottom:0px;
width: 100%;
height:calc(100% + 100px);
mix-blend-mode:screen;
opacity: 0.8;
object-fit: cover;
z-index:8;
}
#testImg{position: absolute;width:80%;height: 90%;z-index: 4;mix-blend-mode:darken; }
.lrcShow {
font:normal 3em 华文新魏;
font-weight:200;
color: #000080;
white-space: pre;
cursor: none; ;pointer-events: none;
-webkit-background-clip: text;
z-index:10;
filter:drop-shadow(#FFFFFF 1px 0 0)drop-shadow(#FFFFFF 0 1px 0)drop-shadow(#FFFFFF -1px 0 0) drop-shadow(#FFFFFF 0 -1px0);
}
.lrcShow::before { position: absolute;width: 20%;height: 100%;color: transparent;overflow: hidden;white-space: pre-webkit-background-clip: text;
}
zxx-slide {
width: 100%;
height: 100%;
position: absolute;
}
.zxx-slide-a {
position: absolute;
cursor: default;
pointer-events:none;
}
.zxx-slide-a.in {
z-index: 1;
animation-duration: 2s;
animation-name: tilt-in-fwd-tr;
transition: 1s;
}
.zxx-slide-img {
width: 100%;
height: 100%;
}
/**
* ----------------------------------------
* animation tilt-in-fwd-tr
* ----------------------------------------
*/
@keyframes tilt-in-fwd-tr {
0% {transform: rotateY(20deg) rotateX(35deg) translate(300px, -300px) skew(-35deg, 10deg);
opacity: 0;
}
100% {transform: rotateY(0) rotateX(0deg) translate(0, 0) skew(0deg, 0deg);
opacity: 1;
}
}
#processMeter{
position: absolute; right:1%; bottom:6%; width: 200px; height:100px; z-index:55;}
#mCtrl{transform-origin:50%; cursor: pointer;pointer-events:auto;animation: rot 5s linear infinite var(--rState);}
@keyframes rot {to {transform:rotate(1turn)}}
#fullscreen { position: absolute; top:5%; left:83%;color:#ffffff; filter:drop-shadow( 1px 1px 1px #000000);font: normal 2.2em华文新魏; opacity: 1; cursor: pointer; z-index: 10}
</style>
<div id="papa">
<img id="testImg" src="https://xlaj.cn/upfile/202411/27/fn.gif" style="top:30px; left:200px;" />
<video id="vid2" src="https://img.tukuppt.com/video_show/15653652/01/30/45/62bac706237f8.mp4" autoplay loop muted></video>
<zxx-slide>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660941589f345e8d038131b5.jpg"> </a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ed9f345e8d03a52abd.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ed9f345e8d03a52e06.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660946239f345e8d03a6afeb.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ee9f345e8d03a535bb.jpg."></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ee9f345e8d03a531e6.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660946229f345e8d03a6accb.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/66095b059f345e8d03546b8e.jpg"></a>
<a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ed9f345e8d03a52e06.jpg"></a>
</zxx-slide>
<div id="processMeter">
<svg stroke-width="5" viewBox="0 0 200 100" id="svgObj">
<path id='bgc' d="M 100 5 A 95 45 0 0 1 100 95 A 95 45 0 0 1 100 5" stroke="#ebeef5"fill="none" ></path>
<path
class="process-circle"
d="M 100 5 A 95 45 0 0 1 100 95 A 95 45 0 0 1 100 5"
stroke="darkred"
fill="none"
stroke-dasharray="455"
stroke-dashoffset="455"
></path>
<defs>
<clipPath id="clip">
<circle cx="100" cy="50" r="41" />
</clilpPath>
</defs>
<image xlink:href="https://pic.imgdb.cn/item/6723214fd29ded1a8cfe28f1.png" id="mCtrl" width="95" height='95' x="50" y="0" clip-path="url(#clip)" preserveAspectRatio="none" />
<text x="85%" y="50%" stroke="lightgray" text-anchor="middle" dominant-baseline="middle" stroke-width="2" style="font-size:13px;" id="durTime"> </text>
<text x="15%" y="50%" stroke="lightgray" text-anchor="middle" dominant-baseline="middle" stroke-width="2" style="font-size:13px;" id="curTime"> </text>
</svg>
</div>
<div class="lrcShow" data-lrc="牧羊曲" >牧羊曲</div>
<span id="fullscreen">全屏观赏</span>
</div>
<script>
const processCircle = document.querySelector('.process-circle');
// 获取圆的周长
const circumference = processCircle.getTotalLength();
// 把周长赋值给 strokeDasharray
processCircle.style.strokeDasharray = circumference;
function setProcessCircle(percent = 0) {
// 动态计算 offset 赋值给 strokeDashoffset
// 为了支持 percent = 0 | '0%',所以使用 parseInt 转换
processCircle.style.strokeDashoffset =
circumference * (1 - parseInt(percent) / 100)
}
var sf0 = document.createElement('script');
sf0.type = 'text/javascript';
sf0.src = "https://file.uhsea.com/2410/739c572b5176f670f350463cf9ade957QB.js";
sf0.charset = "utf-8";
document.body.appendChild(sf0);
sf0.onload = () => {
let lrctxt = `
牧羊曲 - 郑绪岚
词:王立平
曲:王立平
日出嵩山坳
晨钟惊飞鸟
林间小溪水潺潺
坡上青青草
野果香山花俏
狗儿跳羊儿跑
举起鞭儿轻轻摇
小曲满山飘满山飘
莫道女儿娇
无暇有奇巧
冬去春来十六载
黄花正年少
腰身壮胆气豪
常练武勤操劳
耕田放牧打豺狼
风雨一肩挑一肩挑
风雨一肩挑一肩挑
一肩挑
`;
let opts = {
lrcTxt: lrctxt,
audioURL: "https://file.uhsea.com/2411/084853c28b242814a04e290ed762dd8c1V.mp3",
}
let player = new lrcPlayerY(opts);
let circlePoints = [];
let bgcLen = bgc.getTotalLength();
for (let i = 0; i < bgcLen; i++) {
circlePoints.push(bgc.getPointAtLength(i));
}
//console.log(circlePoints);
var eleZxxSlides = document.querySelectorAll('zxx-slide');
[].slice.call(eleZxxSlides).forEach(function(container) {
var timerSlide = null;
var indexSlide = 0;
// 对应的元素
var eleSlides = [].slice.call(container.querySelectorAll('a'));
var eleButtons = [].slice.call(container.querySelectorAll('button'));
var funSlide = function() {
eleSlides.forEach(function(slide, index) {
if (!player.mObj.paused) {
if (indexSlide == index) {
slide.classList.add('in');
} else if (slide.classList.contains('in')) {
slide.classList.remove('in');
}
}
});
timerSlide = setTimeout(function() {
indexSlide++;
if (indexSlide == eleSlides.length) {
indexSlide = 0;
}
funSlide();
},
12000);
}
indexSlide++;
setTimeout(funSlide, 12000);
});
let formatTime = (time) => {
let str = '';
let min = parseInt(time / 60);
let sec = parseInt(time % 60);
return ((min < 10 ? '0' + min: min) + ":" + (sec < 10 ? '0' + sec: sec));
};
player.mObj.addEventListener('timeupdate', function() {
let processValue = player.mObj.currentTime / player.mObj.duration;
processCircle.style.strokeDashoffset = circumference * (1 - processValue);
durTime.textContent = formatTime(player.mObj.duration);
curTime.textContent = formatTime(player.mObj.currentTime);
});
mCtrl.addEventListener('click', () => {
console.log('mCtrl cliecked !');
player.mObj.paused ? (mCtrl.style.setProperty('--rState', 'running'), player.mObj.play()) : (mCtrl.style.setProperty('--rState', 'paused'), player.mObj.pause());
});
var mState = () => {
papa.style.setProperty('--state', ['running', 'paused'][ + player.mObj.paused]);
player.mObj.paused ?(vid2.pause(), image0.stop()) : (vid2.play(), image0.play());
};
//player.mObj.oncanplay = player.mObj.onplaying = player.mObj.onpause = () => mState();
//mCtrl.onclick = () => player.mObj.paused ? player.mObj.play() : player.mObj.pause();
//mCtrl.style.animationPlayState = player.mObj.paused ? 'paused' : 'running';
player.mObj.addEventListener('play', () => mState());
player.mObj.addEventListener('pause', () => mState());
/**
let seeking = false;
let moveEventProc = (event) => {
if (!seeking) return;
let thePoint = 0,
minV = 100;
circlePoints.forEach((point, idx) => {
let mx = (point.x - event.offsetX),my = (point.y - event.offsetY) ;
let mv = mx * mx + my * my;
if (mv < minV) {
minV = mv;
thePoint = idx;
}
});
let chkVal = thePoint / circumference;
let chkTime = player.mObj.duration * chkVal;
processCircle.style.strokeDashoffset = circumference * (1 - chkVal);
for (i = 0; i < player.lrcVec.length; i++) {
if (player.lrcVec.seconds >= chkTime) {
//console.log(player.lrcVec.seconds, i);
player.idx = i;
player.mObj.currentTime = chkTime;
break;
}
};
};
processCircle.addEventListener("mousemove", (event) => moveEventProc(event));
bgc.addEventListener("mousemove", (event) => moveEventProc(event));
processCircle.onclick = bgc.onclick = () => seeking = !seeking;
**/
let fs = true;
fullscreen.onclick = () => {
fs ? (fullscreen.innerText = '退出全屏', papa.requestFullscreen()) : (fullscreen.innerText = '全屏欣赏', document.exitFullscreen());
fs = !fs;
};
// 控制图片的代码
if ('getContext' in document.createElement('canvas')) {
HTMLImageElement.prototype.play = function() {
if (this.storeCanvas) {
// 移除存储的canvas
this.storeCanvas.parentElement.removeChild(this.storeCanvas);
this.storeCanvas = null;
// 透明度还原
this.style.opacity = '';
}
if (this.storeUrl) {
this.src = this.storeUrl;
}
};
HTMLImageElement.prototype.stop = function() {
var canvas = document.createElement('canvas');
// 尺寸
var width = this.width,
height = this.height;
if (width && height) {
// 存储之前的地址
if (!this.storeUrl) {
this.storeUrl = this.src;
}
// canvas大小
canvas.width = width;
canvas.height = height;
// 绘制图片帧(第一帧)
canvas.getContext('2d').drawImage(this, 0, 0, width, height);
// 重置当前图片
try {
this.src = canvas.toDataURL("image/gif");
} catch(e) {
// 跨域
this.removeAttribute('src');
// 载入canvas元素
canvas.style.position = 'absolute';
// 前面插入图片
this.parentElement.insertBefore(canvas, this);
// 隐藏原图
this.style.opacity = '0';
// 存储canvas
this.storeCanvas = canvas;
}
}
};
}
var image0 = document.getElementById("testImg");
}
</script>
页:
[1]