mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-27 01:21:20 -08:00
优化回调分离
This commit is contained in:
1 parent
4b61098945
commit
ac1ba12767
11 files changed
+108
-53
No files matched your search
@@ -17,9 +17,16 @@ export default function aspectRatio(art) {
|
||||
const { ratio } = target.dataset;
|
||||
if (ratio) {
|
||||
player.aspectRatio(ratio.split(':'));
|
||||
inverseClass(target, 'current');
|
||||
art.contextmenu.hide();
|
||||
}
|
||||
},
|
||||
callback: $menu => {
|
||||
art.on('aspectRatio', ratio => {
|
||||
const $current = Array.from($menu.querySelectorAll('span')).find(
|
||||
item => item.dataset.ratio === ratio.join(':')
|
||||
);
|
||||
inverseClass($current, 'current');
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -60,10 +60,11 @@ export default class Contextmenu {
|
||||
this.art.emit('contextmenu:click', $menu);
|
||||
});
|
||||
}
|
||||
this.art.emit('contextmenu:add', $menu);
|
||||
callback && callback($menu);
|
||||
this[name] = $menu;
|
||||
insertByIndex($contextmenu, $menu, menu.index || id);
|
||||
this[name] = $menu;
|
||||
menu.callback && menu.callback($menu);
|
||||
callback && callback($menu);
|
||||
this.art.emit('contextmenu:add', $menu);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,9 +20,16 @@ export default function playbackRate(art) {
|
||||
const { rate } = target.dataset;
|
||||
if (rate) {
|
||||
player.playbackRate(Number(rate));
|
||||
inverseClass(target, 'current');
|
||||
art.contextmenu.hide();
|
||||
}
|
||||
},
|
||||
callback: $menu => {
|
||||
art.on('playbackRate', rate => {
|
||||
const $current = Array.from($menu.querySelectorAll('span')).find(
|
||||
item => Number(item.dataset.rate) === rate
|
||||
);
|
||||
inverseClass($current, 'current');
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -28,10 +28,11 @@ export default class Layers {
|
||||
this.art.emit('layers:click', $layer);
|
||||
});
|
||||
}
|
||||
this.art.emit('layers:add', $layer);
|
||||
callback && callback($layer);
|
||||
this[name] = $layer;
|
||||
insertByIndex($layers, $layer, layer.index || id);
|
||||
this[name] = $layer;
|
||||
item.callback && item.callback($layer);
|
||||
callback && callback($layer);
|
||||
this.art.emit('layers:add', $layer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,8 +46,6 @@ export default function aspectRatioMix(art, player) {
|
||||
setStyle($video, 'height', null);
|
||||
setStyle($video, 'padding', null);
|
||||
delete $player.dataset.aspectRatio;
|
||||
const $default = art.contextmenu.aspectRatio.querySelector('.default');
|
||||
inverseClass($default, 'current');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
export default function currentTimeMix(art, player) {
|
||||
Object.defineProperty(player, 'currentTime', {
|
||||
get: () => art.refs.$video.currentTime || 0
|
||||
get: () => art.refs.$video.currentTime || 0,
|
||||
set: currentTime => {
|
||||
art.refs.$video.currentTime = currentTime;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { clamp, inverseClass } from '../utils';
|
||||
import { clamp } from '../utils';
|
||||
|
||||
export default function playbackRateMix(art, player) {
|
||||
const { refs: { $video, $player }, i18n, notice } = art;
|
||||
@@ -22,8 +22,6 @@ export default function playbackRateMix(art, player) {
|
||||
if (player.$playbackRateState) {
|
||||
player.playbackRate(1);
|
||||
delete $player.dataset.playbackRate;
|
||||
const $normal = art.contextmenu.playbackRate.querySelector('.normal');
|
||||
inverseClass($normal, 'current');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -3,18 +3,20 @@ export default function switchMix(art, player) {
|
||||
|
||||
Object.defineProperty(player, 'switch', {
|
||||
value: (url, name = 'unknown') => {
|
||||
const { currentTime } = player;
|
||||
art.emit('beforeMountUrl', url);
|
||||
$video.src = player.mountUrl(url);
|
||||
option.url = url;
|
||||
player.playbackRateRemove();
|
||||
player.aspectRatioRemove();
|
||||
player.seek(currentTime);
|
||||
if (isPlaying) {
|
||||
player.play();
|
||||
if (url !== option.url) {
|
||||
const { currentTime } = player;
|
||||
art.emit('beforeMountUrl', url);
|
||||
$video.src = player.mountUrl(url);
|
||||
option.url = url;
|
||||
player.playbackRateRemove();
|
||||
player.aspectRatioRemove();
|
||||
player.seek(currentTime);
|
||||
if (isPlaying) {
|
||||
player.play();
|
||||
}
|
||||
notice.show(`${i18n.get('Switch video')}: ${name}`);
|
||||
art.emit('switch', url);
|
||||
}
|
||||
notice.show(`${i18n.get('Switch video')}: ${name}`);
|
||||
art.emit('switch', url);
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user