canvas弹幕方式从下往上~匀速直线运动~初版

<!DOCTYPE html>
<html lang="en">

	<head>
		<meta charset="UTF-8">
		<title>canvas匀速直线运动</title>
		<style>
			* {
				margin: 0;
				padding: 0;
			}
			
			canvas {
				border: 1px solid #ddd;
				margin: 10px;
			}
		</style>
	</head>

	<body>
		<canvas id="canvas">你的浏览器不支持canvas,请跟换其他浏览器试一试</canvas>
		<script>
			var t = ""; //循环定时器
			var inputval = "请输入文本啊66";
			var boxheight = ""; //要运动物体高度的高度
			var cwidth = "";
			var cheight = "";
					var startPoint = "" //运动距离
			window.onload = function() {
				var canvas = document.getElementById('canvas');
				cwidth = canvas.width = 375;         
				cheight = canvas.height = 590;
				var context = canvas.getContext('2d'); //获得画笔
				context.translate(canvas.width / 2, 0)//移动位置
				context.rotate(Math.PI / 2);//旋转角度-180°~180°
				context.font = "bold 40px '字体','字体','微软雅黑','宋体'"; //设置字体()
				context.textBaseline = 'middle'; //在绘制文本时使用的当前文本基线
				context.fillText(inputval, canvas.height, '0'); //文字及位置(context.font要先设置)
				startPoint = canvas.height;
				boxheight = context.measureText(inputval).width//获取文本水平排列时的宽度
				t = setInterval(function() {
					run(context);
				}, 15);
			};

			function run(cxt) {
				var speed = -1; //每次移动的单位距离
				var clearcwidth = cwidth / 2
				cxt.clearRect(0, -clearcwidth, cheight, cwidth); //清除画布
				startPoint += speed;
				cxt.beginPath();
				cxt.fillStyle = '#000'; //设置笔触的颜色
				cxt.font = "bold 40px '字体','字体','微软雅黑','宋体'"; //设置字体()
				console.log(startPoint);
				console.log(boxheight);
				if(startPoint <= -boxheight) {
					startPoint = cheight
				}
				cxt.fillText(inputval, startPoint, '0'); //文字及位置(context.font要先设置)
			}
		</script>
	</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Canvas上实现弹幕效果,可以按照以下步骤进行操作: 1. 创建一个Canvas元素,并使用绝对定位将其覆盖在视频上方。可以使用HTML中的<canvas>标签,通过设置宽度和高度来确定Canvas的大小。 2. 在JavaScript中创建一个Barrage类,该类用于存储弹幕对象并记录相应的弹幕信息。可以使用一个数组来存储弹幕对象。 3. 在Barrage类中,绘制弹幕文本。你可以使用Canvas绘制文本方法(如fillText)来将弹幕文本绘制Canvas上。可以设置文本偏移量来控制弹幕的移动速度。 4. 在定时器中,更新弹幕的位置并重新绘制Canvas上的所有弹幕内容。你可以使用一个循环来遍历弹幕数组,更新每个弹幕的X坐标。然后使用Canvas绘制文本方法将更新后的弹幕绘制Canvas上。 5. 当弹幕文本超出Canvas范围时,从弹幕数组中移除该弹幕。 下面是一个简单的实现示例: ```javascript let canvas = document.getElementById('canvas'); let ctx = canvas.getContext('2d'); ctx.font = '24px Verdana'; class Barrage { constructor(text, x, y, speed, color) { this.text = text; this.x = x; this.y = y; this.speed = speed; this.color = color; } } let barrageList = [ new Barrage('弹幕1', 2000, 24, 1, 'red'), new Barrage('弹幕2', 1900, 48, 3, 'pink'), // 其他弹幕... ]; function updateBarrage() { ctx.clearRect(0, 0, canvas.width, canvas.height); for (let i = 0; i < barrageList.length; i++) { let barrage = barrageList[i]; barrage.x -= barrage.speed; ctx.fillStyle = barrage.color; ctx.fillText(barrage.text, barrage.x, barrage.y); if (barrage.x < -300) { barrage.x = 2000; } } } setInterval(updateBarrage, 1000 / 60); ``` 在HTML中,你可以放置一个`<div>`元素并在其中嵌入上述Canvas元素: ```html <div> <canvas id="canvas" width="2000" height="240"></canvas> </div> ``` 这样,你就可以在Canvas上实现弹幕效果了。这个示例中的弹幕将从右侧向左侧移动,并循环播放。你可以根据需要进行调整和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用canvas如何实现发送视频弹幕,H5 Canvas学习](https://blog.csdn.net/wzsud/article/details/122270259)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Canvas弹幕实现](https://blog.csdn.net/z69183787/article/details/105391669)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [canvas画布的方式实现弹幕](https://blog.csdn.net/wuyoulv/article/details/128639020)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值