JS_围绕圆形滑动

需求:滑动手势最大不能超过一个半径为50的圆形,超出围绕圆形边线滑动
这里只提供一个思路,下面代码可以运行,但是要使用需要改成自己的参数

<div style="width: 100%;height: 100vh;display: flex;justify-content: center;align-items: center;">
	<div style="width: 100px;height: 100px;background: #888;border-radius: 50%;">
		<div id="myElement" style="width: 20px;height: 20px;border-radius: 50%;background: red;position: absolute;"></div>
	</div>
</div>
<script>
	var circleRadius = 50; // 圆形半径

	// 获取圆心坐标
	var circleCenterX = window.innerWidth / 2;
	var circleCenterY = window.innerHeight / 2;

	// 添加滑动事件监听器
	document.addEventListener('mousemove', handleMouseMove);

	// 处理滑动事件
	function handleMouseMove(event) {
		// 获取鼠标相对于窗口的坐标
		var mouseX = event.clientX;
		var mouseY = event.clientY;

		// 计算鼠标位置相对于圆心的偏移量
		var offsetX = mouseX - circleCenterX;
		var offsetY = mouseY - circleCenterY;

		// 计算鼠标位置相对于圆心的距离
		var distance = Math.sqrt(offsetX * offsetX + offsetY * offsetY);

		// 如果距离大于半径,则将偏移量按比例缩小到半径范围内
		if (distance > circleRadius) {
			var ratio = circleRadius / distance;
			offsetX *= ratio;
			offsetY *= ratio;
		}

		// 计算围绕圆心的新坐标
		var newX = circleCenterX + offsetX;
		var newY = circleCenterY + offsetY;

		// 更新元素位置(这里假设要更新一个元素的位置)
		var element = document.getElementById('myElement');
		element.style.left = newX + 'px';
		element.style.top = newY + 'px';
	}
</script>

示例

在这里插入图片描述

此示例是一个鼠标按下放开的示例,手机端可以替换为手机的事件

<div style="width: 100%;height: 100vh;display: flex;justify-content: center;align-items: center;">
	<div style="width: 100px;height: 100px;background: #888;border-radius: 50%;position: relative;display: flex;justify-content: center;align-items: center;">
		<div onmousedown="mousedown(event)" onmouseup="mouseup(event)" id="myElement" 
		style="width: 20px;height: 20px;border-radius: 50%;background: red;position: relative;"></div>
	</div>
</div>
<script>
	var circleRadius = 50; // 圆形半径
	// 获取圆心坐标
	var circleCenterX = 0
	var circleCenterY = 0

	// 添加滑动事件监听器
	document.addEventListener('mousemove', handleMouseMove);
	
	function mousedown(event) {
		circleCenterX = event.clientX;
		circleCenterY = event.clientY;
	}
	
	function mouseup() {
		circleCenterX = 0
		circleCenterY = 0
		var element = document.getElementById('myElement');
		element.style.left = '0px';
		element.style.top = '0px';
	}
	
	// 处理滑动事件
	function handleMouseMove(event) {
		// 获取鼠标相对于窗口的坐标
		var mouseX = event.clientX;
		var mouseY = event.clientY;

		// 计算鼠标位置相对于圆心的偏移量
		var offsetX = mouseX - circleCenterX;
		var offsetY = mouseY - circleCenterY;

		// 计算鼠标位置相对于圆心的距离
		var distance = Math.sqrt(offsetX * offsetX + offsetY * offsetY);

		// 如果距离大于半径,则将偏移量按比例缩小到半径范围内
		if (distance > circleRadius) {
			var ratio = circleRadius / distance;
			offsetX *= ratio;
			offsetY *= ratio;
		}

		// 计算围绕圆心的新坐标
		var newX = offsetX;
		var newY = offsetY;
		
		if(circleCenterX >0) {
			// 更新元素位置(这里假设要更新一个元素的位置)
			var element = document.getElementById('myElement');
			element.style.left = newX + 'px';
			element.style.top = newY + 'px';
		}
	}
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity圆形滑动条是一种用户界面的控件,它可以以圆的形式展示并允许用户通过拖动滑块来选择一个值。它通常被用在需要用户进行选项选择或数值调整的场景中。 Unity圆形滑动条的基本原理是将一个圆形滑动条控件与数值范围关联起来。用户可以通过点击并拖动滑块来选择一个特定的数值,滑块的位置与数值的关联通常以圆心为起点从0到360度的方式来表示。当用户拖动滑块时,可以通过监测滑块的角度或者位置的改变来获取用户的选值,并根据选值进行相应的操作。 实现Unity圆形滑动条主要可以通过以下步骤: 1.创建一个圆形的背景作为滑动条的底部,可以使用Unity的UI系统或者自定义绘制技术来实现。 2.在底部圆形背景上创建一个滑块,滑块的形状可以是一个小圆点或者其他你想要的形状。 3.实现用户拖动滑块的交互,可以通过监测鼠标或手指的位置变化来判断滑块的移动,并根据滑块的位置计算数值的选择。 4.根据滑块的位置或角度计算数值,可以通过线性映射或者其他的数值转换方法来将滑块的位置映射为一个数值范围内的数值。 5.根据滑块的数值进行相应的操作,例如更新游戏的属性、调整音量或其他与数值相关的操作。 总而言之,Unity圆形滑动条是一种实现用户交互和数值选择的控件,通过拖动滑块来选择数值,并根据数值进行相应的操作。可以根据需求进行自定义设计和实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值