mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-28 18:41:20 -08:00
update danmuku.js
This commit is contained in:
1 parent
e7c23f359a
commit
06782590b7
3 files changed
+108
-30
No files matched your search
@@ -315,15 +315,21 @@ class Danmuku {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
continue() {
|
continue() {
|
||||||
|
const { $player } = this.art.template;
|
||||||
|
const playerWidth = this.getRect($player, 'width');
|
||||||
this.filter('stop', (danmu)=>{
|
this.filter('stop', (danmu)=>{
|
||||||
danmu.$state = 'emit';
|
danmu.$state = 'emit';
|
||||||
danmu.$ref.dataset.state = 'emit';
|
danmu.$ref.dataset.state = 'emit';
|
||||||
danmu.$lastStartTime = Date.now();
|
danmu.$lastStartTime = Date.now();
|
||||||
switch(danmu.mode){
|
switch(danmu.mode){
|
||||||
case 0:
|
case 0:
|
||||||
danmu.$ref.style.transform = `translateX(${-danmu.$restWidth}px) translateY(0px) translateZ(0px)`;
|
{
|
||||||
danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;
|
const danmuWidth = this.getRect(danmu.$ref, 'width');
|
||||||
break;
|
const translateX = playerWidth + danmuWidth;
|
||||||
|
danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;
|
||||||
|
danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -353,31 +359,60 @@ class Danmuku {
|
|||||||
}
|
}
|
||||||
resize() {
|
resize() {
|
||||||
const { $player } = this.art.template;
|
const { $player } = this.art.template;
|
||||||
const danmuLeft = this.getRect($player, 'width');
|
const { left: playerLeft , width: playerWidth } = this.getRect($player);
|
||||||
this.filter('wait', (danmu)=>{
|
this.filter('wait', (danmu)=>{
|
||||||
if (danmu.$ref) {
|
if (danmu.$ref) {
|
||||||
danmu.$ref.style.border = 'none';
|
danmu.$ref.style.border = 'none';
|
||||||
danmu.$ref.style.left = `${danmuLeft}px`;
|
danmu.$ref.style.left = `${playerWidth}px`;
|
||||||
danmu.$ref.style.marginLeft = '0px';
|
danmu.$ref.style.marginLeft = '0px';
|
||||||
danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';
|
danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';
|
||||||
danmu.$ref.style.transition = 'transform 0s linear 0s';
|
danmu.$ref.style.transition = 'transform 0s linear 0s';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// this.filter('emit', (danmu) => {
|
||||||
|
// switch (danmu.mode) {
|
||||||
|
// case 0: {
|
||||||
|
// const { left: playerLeft, width: playerWidth } = this.getRect($player);
|
||||||
|
// const { left: danmuLeft } = this.getRect(danmu.$ref);
|
||||||
|
// const translateX = playerWidth - (danmuLeft - playerLeft);
|
||||||
|
// danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// default:
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
this.filter('stop', (danmu)=>{
|
||||||
|
switch(danmu.mode){
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
const { left: danmuLeft } = this.getRect(danmu.$ref);
|
||||||
|
const translateX = playerWidth - (danmuLeft - playerLeft);
|
||||||
|
danmu.$ref.style.left = `${playerWidth}px`;
|
||||||
|
danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
update() {
|
update() {
|
||||||
const { $player } = this.art.template;
|
const { $player } = this.art.template;
|
||||||
this.animationFrameTimer = window.requestAnimationFrame(()=>{
|
this.animationFrameTimer = window.requestAnimationFrame(()=>{
|
||||||
if (this.art.playing && !this.isHide) {
|
if (this.art.playing && !this.isHide) {
|
||||||
const danmuLeft = this.getRect($player, 'width');
|
const playerWidth = this.getRect($player, 'width');
|
||||||
this.filter('emit', (danmu)=>{
|
this.filter('emit', (danmu)=>{
|
||||||
danmu.$restTime -= (Date.now() - danmu.$lastStartTime) / 1000;
|
const time = (Date.now() - danmu.$lastStartTime) / 1000;
|
||||||
|
danmu.$emitTime += time;
|
||||||
|
danmu.$restTime -= time;
|
||||||
danmu.$lastStartTime = Date.now();
|
danmu.$lastStartTime = Date.now();
|
||||||
if (danmu.$restTime <= 0) {
|
if (danmu.$restTime <= 0) {
|
||||||
danmu.$state = 'wait';
|
danmu.$state = 'wait';
|
||||||
danmu.$ref.dataset.state = 'wait';
|
danmu.$ref.dataset.state = 'wait';
|
||||||
danmu.$ref.style.border = 'none';
|
danmu.$ref.style.border = 'none';
|
||||||
danmu.$ref.style.left = `${danmuLeft}px`;
|
danmu.$ref.style.left = `${playerWidth}px`;
|
||||||
danmu.$ref.style.marginLeft = '0px';
|
danmu.$ref.style.marginLeft = '0px';
|
||||||
danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';
|
danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';
|
||||||
danmu.$ref.style.transition = 'transform 0s linear 0s';
|
danmu.$ref.style.transition = 'transform 0s linear 0s';
|
||||||
@@ -394,19 +429,21 @@ class Danmuku {
|
|||||||
danmu.$ref.style.color = danmu.color || '#fff';
|
danmu.$ref.style.color = danmu.color || '#fff';
|
||||||
danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color || '#fff'}` : 'none';
|
danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color || '#fff'}` : 'none';
|
||||||
danmu.$restTime = this.option.synchronousPlayback && this.art.playbackRate ? this.option.speed / Number(this.art.playbackRate) : this.option.speed;
|
danmu.$restTime = this.option.synchronousPlayback && this.art.playbackRate ? this.option.speed / Number(this.art.playbackRate) : this.option.speed;
|
||||||
danmu.$lastStartTime = Date.now();
|
|
||||||
const danmuWidth = this.getRect(danmu.$ref, 'width');
|
const danmuWidth = this.getRect(danmu.$ref, 'width');
|
||||||
const danmuTop = _getDanmuTopDefault.default(this, danmu);
|
const danmuTop = _getDanmuTopDefault.default(this, danmu);
|
||||||
danmu.$state = 'emit';
|
danmu.$state = 'emit';
|
||||||
danmu.$ref.dataset.state = 'emit';
|
danmu.$ref.dataset.state = 'emit';
|
||||||
|
danmu.$lastStartTime = Date.now();
|
||||||
switch(danmu.mode){
|
switch(danmu.mode){
|
||||||
case 0:
|
case 0:
|
||||||
danmu.$restWidth = danmuLeft + danmuWidth;
|
{
|
||||||
danmu.$ref.style.left = `${danmuLeft}px`;
|
danmu.$ref.style.left = `${playerWidth}px`;
|
||||||
danmu.$ref.style.top = `${danmuTop}px`;
|
danmu.$ref.style.top = `${danmuTop}px`;
|
||||||
danmu.$ref.style.transform = `translateX(${-danmu.$restWidth}px) translateY(0px) translateZ(0px)`;
|
const translateX = playerWidth + danmuWidth;
|
||||||
danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;
|
danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;
|
||||||
break;
|
danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 1:
|
case 1:
|
||||||
danmu.$ref.style.top = `${danmuTop}px`;
|
danmu.$ref.style.top = `${danmuTop}px`;
|
||||||
danmu.$ref.style.left = '50%';
|
danmu.$ref.style.left = '50%';
|
||||||
@@ -464,9 +501,9 @@ class Danmuku {
|
|||||||
...danmu,
|
...danmu,
|
||||||
$state: 'wait',
|
$state: 'wait',
|
||||||
$ref: null,
|
$ref: null,
|
||||||
|
$emitTime: 0,
|
||||||
$restTime: 0,
|
$restTime: 0,
|
||||||
$lastStartTime: 0,
|
$lastStartTime: 0
|
||||||
$restWidth: 0
|
|
||||||
});
|
});
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"mappings":"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 truncated
|
{"mappings":"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 truncated
|
||||||
@@ -171,24 +171,32 @@ export default class Danmuku {
|
|||||||
}
|
}
|
||||||
|
|
||||||
continue() {
|
continue() {
|
||||||
|
const { $player } = this.art.template;
|
||||||
|
const playerWidth = this.getRect($player, 'width');
|
||||||
|
|
||||||
this.filter('stop', (danmu) => {
|
this.filter('stop', (danmu) => {
|
||||||
danmu.$state = 'emit';
|
danmu.$state = 'emit';
|
||||||
danmu.$ref.dataset.state = 'emit';
|
danmu.$ref.dataset.state = 'emit';
|
||||||
danmu.$lastStartTime = Date.now();
|
danmu.$lastStartTime = Date.now();
|
||||||
switch (danmu.mode) {
|
switch (danmu.mode) {
|
||||||
case 0:
|
case 0: {
|
||||||
danmu.$ref.style.transform = `translateX(${-danmu.$restWidth}px) translateY(0px) translateZ(0px)`;
|
const danmuWidth = this.getRect(danmu.$ref, 'width');
|
||||||
|
const translateX = playerWidth + danmuWidth;
|
||||||
|
danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;
|
||||||
danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;
|
danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend() {
|
suspend() {
|
||||||
const { $player } = this.art.template;
|
const { $player } = this.art.template;
|
||||||
|
|
||||||
this.filter('emit', (danmu) => {
|
this.filter('emit', (danmu) => {
|
||||||
danmu.$state = 'stop';
|
danmu.$state = 'stop';
|
||||||
danmu.$ref.dataset.state = 'stop';
|
danmu.$ref.dataset.state = 'stop';
|
||||||
@@ -205,21 +213,52 @@ export default class Danmuku {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
resize() {
|
resize() {
|
||||||
const { $player } = this.art.template;
|
const { $player } = this.art.template;
|
||||||
const danmuLeft = this.getRect($player, 'width');
|
const { left: playerLeft, width: playerWidth } = this.getRect($player);
|
||||||
|
|
||||||
this.filter('wait', (danmu) => {
|
this.filter('wait', (danmu) => {
|
||||||
if (danmu.$ref) {
|
if (danmu.$ref) {
|
||||||
danmu.$ref.style.border = 'none';
|
danmu.$ref.style.border = 'none';
|
||||||
danmu.$ref.style.left = `${danmuLeft}px`;
|
danmu.$ref.style.left = `${playerWidth}px`;
|
||||||
danmu.$ref.style.marginLeft = '0px';
|
danmu.$ref.style.marginLeft = '0px';
|
||||||
danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';
|
danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';
|
||||||
danmu.$ref.style.transition = 'transform 0s linear 0s';
|
danmu.$ref.style.transition = 'transform 0s linear 0s';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// this.filter('emit', (danmu) => {
|
||||||
|
// switch (danmu.mode) {
|
||||||
|
// case 0: {
|
||||||
|
// const { left: playerLeft, width: playerWidth } = this.getRect($player);
|
||||||
|
// const { left: danmuLeft } = this.getRect(danmu.$ref);
|
||||||
|
// const translateX = playerWidth - (danmuLeft - playerLeft);
|
||||||
|
// danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// default:
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
this.filter('stop', (danmu) => {
|
||||||
|
switch (danmu.mode) {
|
||||||
|
case 0: {
|
||||||
|
const { left: danmuLeft } = this.getRect(danmu.$ref);
|
||||||
|
const translateX = playerWidth - (danmuLeft - playerLeft);
|
||||||
|
danmu.$ref.style.left = `${playerWidth}px`;
|
||||||
|
danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,16 +266,18 @@ export default class Danmuku {
|
|||||||
const { $player } = this.art.template;
|
const { $player } = this.art.template;
|
||||||
this.animationFrameTimer = window.requestAnimationFrame(() => {
|
this.animationFrameTimer = window.requestAnimationFrame(() => {
|
||||||
if (this.art.playing && !this.isHide) {
|
if (this.art.playing && !this.isHide) {
|
||||||
const danmuLeft = this.getRect($player, 'width');
|
const playerWidth = this.getRect($player, 'width');
|
||||||
|
|
||||||
this.filter('emit', (danmu) => {
|
this.filter('emit', (danmu) => {
|
||||||
danmu.$restTime -= (Date.now() - danmu.$lastStartTime) / 1000;
|
const time = (Date.now() - danmu.$lastStartTime) / 1000;
|
||||||
|
danmu.$emitTime += time;
|
||||||
|
danmu.$restTime -= time;
|
||||||
danmu.$lastStartTime = Date.now();
|
danmu.$lastStartTime = Date.now();
|
||||||
if (danmu.$restTime <= 0) {
|
if (danmu.$restTime <= 0) {
|
||||||
danmu.$state = 'wait';
|
danmu.$state = 'wait';
|
||||||
danmu.$ref.dataset.state = 'wait';
|
danmu.$ref.dataset.state = 'wait';
|
||||||
danmu.$ref.style.border = 'none';
|
danmu.$ref.style.border = 'none';
|
||||||
danmu.$ref.style.left = `${danmuLeft}px`;
|
danmu.$ref.style.left = `${playerWidth}px`;
|
||||||
danmu.$ref.style.marginLeft = '0px';
|
danmu.$ref.style.marginLeft = '0px';
|
||||||
danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';
|
danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';
|
||||||
danmu.$ref.style.transition = 'transform 0s linear 0s';
|
danmu.$ref.style.transition = 'transform 0s linear 0s';
|
||||||
@@ -263,17 +304,17 @@ export default class Danmuku {
|
|||||||
this.option.synchronousPlayback && this.art.playbackRate
|
this.option.synchronousPlayback && this.art.playbackRate
|
||||||
? this.option.speed / Number(this.art.playbackRate)
|
? this.option.speed / Number(this.art.playbackRate)
|
||||||
: this.option.speed;
|
: this.option.speed;
|
||||||
danmu.$lastStartTime = Date.now();
|
|
||||||
const danmuWidth = this.getRect(danmu.$ref, 'width');
|
const danmuWidth = this.getRect(danmu.$ref, 'width');
|
||||||
const danmuTop = getDanmuTop(this, danmu);
|
const danmuTop = getDanmuTop(this, danmu);
|
||||||
danmu.$state = 'emit';
|
danmu.$state = 'emit';
|
||||||
danmu.$ref.dataset.state = 'emit';
|
danmu.$ref.dataset.state = 'emit';
|
||||||
|
danmu.$lastStartTime = Date.now();
|
||||||
switch (danmu.mode) {
|
switch (danmu.mode) {
|
||||||
case 0: {
|
case 0: {
|
||||||
danmu.$restWidth = danmuLeft + danmuWidth;
|
danmu.$ref.style.left = `${playerWidth}px`;
|
||||||
danmu.$ref.style.left = `${danmuLeft}px`;
|
|
||||||
danmu.$ref.style.top = `${danmuTop}px`;
|
danmu.$ref.style.top = `${danmuTop}px`;
|
||||||
danmu.$ref.style.transform = `translateX(${-danmu.$restWidth}px) translateY(0px) translateZ(0px)`;
|
const translateX = playerWidth + danmuWidth;
|
||||||
|
danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;
|
||||||
danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;
|
danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -348,9 +389,9 @@ export default class Danmuku {
|
|||||||
...danmu,
|
...danmu,
|
||||||
$state: 'wait',
|
$state: 'wait',
|
||||||
$ref: null,
|
$ref: null,
|
||||||
|
$emitTime: 0,
|
||||||
$restTime: 0,
|
$restTime: 0,
|
||||||
$lastStartTime: 0,
|
$lastStartTime: 0,
|
||||||
$restWidth: 0,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
Reference in new issue
Block a user