【发布时间】:2019-09-25 11:36:35
【问题描述】:
我正在使用香草 javascript 来浏览漫画书的页面。但是,我需要设置一个条件来检查当前多边形中的点是否与下一个多边形中的点相交。如果为 true,我希望 viewBox 从当前点动画到下一个点,如果为 false,则不发生任何事情(使用默认的淡入淡出过渡)。
这是我的一段代码
var DELAY = 400;
function nextArea() {
if (isFirstPage() || areaIndex >= areas.length - 1) {
changePage(true);
changeArea();
} else {
fade();
areaIndex++;
setTimeout(changeArea, DELAY);
}
}
function prevArea() {
if (isLastPage() || areaIndex <= 0) {
changePage(false);
changeArea();
} else {
fade();
areaIndex--;
setTimeout(changeArea, DELAY);
}
}
function changeArea() {
if (isFirstPage() || isLastPage()) {
return;
}
var activeArea = areas[areaIndex];
var points = activeArea.getAttribute('points').split(' ');
var xy1 = points[0].split(',');
var xy2 = points[1].split(',');
var xy3 = points[2].split(',');
var box = [xy1[0], xy1[1], xy2[0] - xy1[0], xy3[1] - xy2[1]];
activePage.classList.remove('fade');
activePage.setAttribute('viewBox', box.join(' '));
activeRect = rects[pageIndex - 1];
activeRect.setAttribute('x', xy1[0]);
activeRect.setAttribute('y', xy1[1]);
}
我的代码库在这里:https://github.com/cnario/svg-carousel
这是我目前所拥有的:https://cnario.github.io/svg-carousel/
这是我期望它的行为方式:https://read.marvel.com/#book/41323
【问题讨论】:
标签: javascript svg svg-animate