星星触摸评分功能
var touch_obj = {};
$scope.touchs = function (event) {
if(event.touches.length == 1){
if(event.target.closest('.stat-text')){
return;
}
if(event.target.closest('.start-div')){
event.stopPropagation();
var startLeft = event.target.closest('.start-div').offsetLeft; // 原始距离
var indexArry = (event.target.closest('.start-div').getAttribute('id')).split('-');
switch(event.type){
case 'touchstart':
touch_obj.hasMove = false;
touch_obj.c_x = event.touches[0].clientX;
touch_obj.c_y = event.touches[0].clientY;
touch_obj.tonchStartTime = new Date().getTime();
break;
case 'touchend':
touch_obj.hasMove = true;
break;
case 'touchcancel':
touch_obj.hasMove = true;
break;
case 'touchmove':
var tempX = event.changedTouches[0].clientX;
var tempY = event.changedTouches[0].clientY;
var diff_x = tempX - touch_obj.c_x;
var diff_y = Math.abs(tempY - touch_obj.c_y);
touch_obj.tonchEndTime = new Date().getTime();
if(Math.abs(diff_x) > diff_y){//认定为水平方向滑动
if(!touch_obj.hasMove && diff_x > 0){
// 右滑
var nX = touch_obj.c_x - startLeft;
startEvent(diff_x + nX,$scope.evaluateTagList[indexArry[1]]);
}
else if(diff_x < -1){
//左滑
var nX = tempX - startLeft;
startEvent(nX,$scope.evaluateTagList[indexArry[1]]);
}
}
break;
}
}
}
};
$timeout(function () {
document.addEventListener("touchstart", $scope.touchs, false);
document.addEventListener("touchmove", $scope.touchs, false);
document.addEventListener("touchend", $scope.touchs, false);
});
function startEvent(nX,item) {
var oneStar = document.querySelector('#key-0').firstElementChild; //获取星星
var starWidth = oneStar.nextElementSibling.offsetLeft - oneStar.offsetLeft; //获取星星宽度
var stat = (nX/starWidth).toFixed(1);
if(stat < 0 ){
stat = (0).toFixed(1);
}
var starSplit = stat.split('.');
if( starSplit[1] == 0 ){
starSplit[0] = starSplit[0] * 1;
}else {
if(starSplit[1] > 2 ){
starSplit[0] = starSplit[0] * 1 + 1;
starSplit[1] = 0;
}else {
starSplit[1] = 0.5;
}
}
var scoreVal = starSplit[0] * 1 + starSplit[1] * 1;
$timeout(function () {
item.score = scoreVal > 5 ? 5 : scoreVal;
item.text = objText[item.score].text;
item.className = objText[item.score].className;
});
}