I have a variable called x
which would be starting point, myCount
for counting every swipes a user has done, and last variable dist
that returns specific numbers how far from the starting point.
I would like to store -1 in myCount
if dist
is going to under -201 dragging(swipe in mobile) to the left side by the user.
Storing positive number is working fine(by dragging right side), but it never stores negative number.
Is there any solutions to fix this problem?
This is what I've done so far by myself:
$(function stripeAnimeModule() {
// Variables
var screen = $('.page1'),
buttons = $('.buttons').find('.button'),
myCount = 1,
x,
dist;
// Functions
function clicked(e) {
if ($(this).hasClass('prev')) {
myCount -= 1;
console.log(myCount, 'this is clicked');
} else {
myCount += 1;
console.log(myCount);
}
}
function touchStart(e) {
return x = e.touches[0].pageX;
e.preventDefault();
}
function touchMove(e) {
var drag = e.touches[0].pageX;
var dist = Math.sqrt(x + drag);
e.preventDefault();
}
function touchEnd(e) {
var dist = e.changedTouches[0].pageX - x;
if (dist < Math.abs(-200)) {
myCount = myCount;
console.log('nothing', dist, myCount);
} else if (dist > 201) {
myCount += 1;
console.log('distance is: ' + dist, x, 'myCount is: '+ myCount);
} else if (dist > -201) {
myCount -= 1;
console.log('distance is: ' + dist, x, 'myCount is: '+ myCount);
}
e.stopPropagation();
e.preventDefault();
}
buttons.on({click: clicked});
screen.bind({touchstart:touchStart, touchmove:touchMove, touchend: touchEnd});
})
* {
margin: 0;
padding: 0;
}
ul li {
list-style: none;
}
a {
display: block;
}
.page1 {
position: absolute;
width: 100vw;
height: 100vh;
background-color: grey;
}
.buttons {
z-index: 1;
}
.prev {
position: absolute;
left: 0;
margin: 0 40px;
}
.shrink {
position: absolute;
}
.next {
position: absolute;
right: 0;
margin: 0 40px;
}
<div class="page1" href="#"></div>
<ul class="buttons">
<li class="button prev">Prev</li>
<li class="shrink"></li>
<li class="button next">Next</li>
</ul>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
$(function stripeAnimeModule() {
// Variables
var screen = $('.page1'),
buttons = $('.buttons').find('.button'),
myCount = 1,
x,
dist;
// Functions
function clicked(e) {
if ($(this).hasClass('prev')) {
myCount -= 1;
console.log(myCount, 'this is clicked');
} else {
myCount += 1;
console.log(myCount);
}
}
function touchStart(e) {
return x = e.touches[0].pageX;
e.preventDefault();
}
function touchMove(e) {
var drag = e.touches[0].pageX;
var dist = Math.sqrt(x + drag);
e.preventDefault();
}
function touchEnd(e) {
var dist = e.changedTouches[0].pageX - x;
if (dist > 201) {
myCount += 1;
console.log('distance is: ' + dist, x, 'myCount is: '+ myCount);
} else if (dist < -201) {
myCount -= 1;
console.log('distance is: ' + dist, x, 'myCount is: '+ myCount);
} else {
myCount = myCount;
console.log('nothing', dist, myCount);
}
e.stopPropagation();
e.preventDefault();
}
buttons.on({click: clicked});
screen.bind({touchstart:touchStart, touchmove:touchMove, touchend: touchEnd});
})
* {
margin: 0;
padding: 0;
}
ul li {
list-style: none;
}
a {
display: block;
}
.page1 {
position: absolute;
width: 100vw;
height: 100vh;
background-color: grey;
}
.buttons {
z-index: 1;
}
.prev {
position: absolute;
left: 0;
margin: 0 40px;
}
.shrink {
position: absolute;
}
.next {
position: absolute;
right: 0;
margin: 0 40px;
}
<div class="page1" href="#"></div>
<ul class="buttons">
<li class="button prev">Prev</li>
<li class="shrink"></li>
<li class="button next">Next</li>
</ul>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Please have a look and let me know if this is what you are looking for.