限制参数范围

This commit is contained in:
Harvey Zack committed 2018-11-23 10:30:54 +08:00
1 parent 748ce304e6
commit 5f384fb04d
7 files changed
+59 -41

No files matched your search

@@ -15,14 +15,14 @@ export default function aspectRatio(menuOption) {
const { target } = event;
const { ratio } = target.dataset;
if (ratio) {
player.aspectRatio(ratio.split(':'));
player.aspectRatio(ratio);
art.contextmenu.hide();
}
},
mounted: $menu => {
art.on('aspectRatioChange', ratio => {
const $current = Array.from($menu.querySelectorAll('span')).find(
item => item.dataset.ratio === ratio.join(':'),
item => item.dataset.ratio === ratio,
);
inverseClass($current, 'current');
});
@@ -9,7 +9,7 @@ export default function playbackRate(menuOption) {
${i18n.get('Play speed')}:
<span data-rate="0.5">0.5</span>
<span data-rate="0.75">0.75</span>
<span data-rate="1" class="normal current">${i18n.get('Normal')}</span>
<span data-rate="1.0" class="normal current">${i18n.get('Normal')}</span>
<span data-rate="1.25">1.25</span>
<span data-rate="1.5">1.5</span>
<span data-rate="2.0">2.0</span>
+14 -10
View File
@@ -1,4 +1,4 @@
import { setStyle } from '../utils';
import { setStyle, errorHandle } from '../utils';
export default function aspectRatioMix(art, player) {
const {
@@ -13,14 +13,21 @@ export default function aspectRatioMix(art, player) {
Object.defineProperty(player, 'aspectRatio', {
value: ratio => {
const ratioName = ratio.length === 2 ? `${ratio[0]}:${ratio[1]}` : i18n.get('Default');
const ratioList = ['default', '4:3', '16:9'];
errorHandle(ratioList.includes(ratio), `'aspectRatio' only accept ${ratioList.toString()} as parameters`);
if (ratio === $player.dataset.aspectRatio) {
return;
}
if (ratio.length === 2) {
if (ratio === 'default') {
player.aspectRatioRemove();
} else {
const ratioArray = ratio.split(':');
const { videoWidth, videoHeight } = $video;
const { clientWidth, clientHeight } = $player;
const videoRatio = videoWidth / videoHeight;
const setupRatio = Number(ratio[0]) / Number(ratio[1]);
const setupRatio = ratioArray[0] / ratioArray[1];
if (videoRatio > setupRatio) {
const percentage = (setupRatio * videoHeight) / videoWidth;
setStyle($video, 'width', `${percentage * 100}%`);
@@ -32,13 +39,10 @@ export default function aspectRatioMix(art, player) {
setStyle($video, 'height', `${percentage * 100}%`);
setStyle($video, 'padding', `${(clientHeight - clientHeight * percentage) / 2}px 0`);
}
$player.dataset.aspectRatio = ratioName;
} else {
player.aspectRatioRemove();
}
notice.show(`${i18n.get('Aspect ratio')}: ${ratioName}`);
$player.dataset.aspectRatio = ratio;
notice.show(`${i18n.get('Aspect ratio')}: ${ratio}`);
art.emit('aspectRatioChange', ratio);
},
});
+1 -4
View File
@@ -8,10 +8,7 @@ export default function flipMix(art, player) {
Object.defineProperty(player, 'flip', {
value: flip => {
const flipList = ['normal', 'horizontal', 'vertical'];
errorHandle(
flipList.includes(flip),
`The 'angle' need to be one of '[normal, horizontal, vertical]', but got ${flip}`,
);
errorHandle(flipList.includes(flip), `'flip' only accept ${flipList.toString()} as parameters`);
art.refs.$player.dataset.flip = flip;
art.emit('flipChange', flip);
},
@@ -1,4 +1,4 @@
import { clamp } from '../utils';
import { errorHandle } from '../utils';
export default function playbackRateMix(art, player) {
const {
@@ -13,11 +13,17 @@ export default function playbackRateMix(art, player) {
Object.defineProperty(player, 'playbackRate', {
value: rate => {
const newRate = clamp(rate, 0.1, 10);
$video.playbackRate = newRate;
$player.dataset.playbackRate = newRate;
notice.show(`${i18n.get('Rate')}: ${newRate === 1 ? i18n.get('Normal') : `${newRate}x`}`);
art.emit('playbackRateChange', newRate);
const rateList = [0.5, 0.75, 1.0, 1.25, 1.5, 2.0];
errorHandle(rateList.includes(rate), `'playbackRate' only accept ${rateList.toString()} as parameters`);
if (rate === $player.dataset.playbackRate) {
return;
}
$video.playbackRate = rate;
$player.dataset.playbackRate = rate;
notice.show(`${i18n.get('Rate')}: ${rate}x`);
art.emit('playbackRateChange', rate);
},
});