html5 canvas键盘左右移动矩形的问题
发布网友
发布时间:2022-05-12 02:54
我来回答
共3个回答
懂视网
时间:2022-05-12 07:15
HTMLcanvas矩形阵雨
在画布上执行
获取制图环境
全屏获取屏幕宽度和屏幕高度
确定每个文字的宽度 以确定列
循环输出
定时器调用
HTML 部分
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>HTMLcanvas矩形阵雨</title></head><body><canvas id="c">您的浏览器不支持 请升级</canvas></body></html>
CSS 部分
<style type="text/css">/* 基本的复位 */* {
margin:0;
padding:0;}/* 给body一个背景 使画布看起来更清晰 */body {
background-color:#000;}canvas {
display:block;}</style>
Javascript 部分
<script type="text/jscript">
var c = document.getElementById("c"); //获取id
var ctx = c.getContext("2d"); //2d制图
c.width = window.innerWidth; //获取屏幕宽度 c.height = window.innerHeight; //获取屏幕高度
var chinese = "abcdefghijklmnopqrstuvwxyz"; //canvas 阵雨文字 chinese = chinese.split(""); //split 分离
var font_size = 10; //字体大小 10px
var columns = c.width/font_size;
//获取列 屏幕宽度/字体大小
var drops = []; // drop 落下 新建数组
for(n=0; n < columns; n++) //控制列
输出 drops[n] = 1; //draw
function draw(){
ctx.fillStyle = "rgba(0,0,0,0.05)"; //绘制矩形 ctx.fillRect(0,0,c.width,c.height); //以(0,0)为坐标 画制矩形
ctx.fillStyle = "#0F0"; //绿色字体 ctx.font = font_size + "px arial"; //以像素为单位 宋体
for(var i=0; i< drops.length; i++)
{ var text = chinese[Math.floor(Math.random()*chinese.length)]; // Math.floor 对浮点数向下取整 ctx.fillText(text, i*font_size, drops[i]*font_size); // 规定在画布上输出的文本 开始绘制文本的x坐标 y坐标
if(drops[i]*font_size > c.height && Math.random() > 0.975) // 如果下落的文本大于屏幕高度 或者 随机数大于0.975 drops[i] = 0; // 重置下落 drops[i]++; // 继续执行 }
}
setInterval(draw,33); //33 执行一次draw()</script>
此文到此结束
我始终相信这个世界上充满了美好与希望 加油!
热心网友
时间:2022-05-12 04:23
加入一个间隔30ms(举个例子,可以根据实际情况修改)的定时器,
当你按下某个键(以左键为例),修改一个全局量bLeftDown=true;
定时器中检测bLeftDown,当bLeftDown时,执行 x-=1 操作,
当你松开某个按键的时候,修改一个全局量bLeftDown=false;
这样就可以比较流畅的移动矩形了
我的空战游戏就是这么做的,效果很好
var VK_UP = 38;var VK_DOWN = 40;var VK_RIGHT = 39;var VK_LEFT = 37;
var VK_A = 65;
document.onkeydown = function(event){
//这个函数处理按键按下事件
if (event.keyCode == VK_A || event.keyCode == VK_LEFT && !bLeftDown) { bLeftDown = true; }
//....其他判断
}document.onkeyup = function(event){
//这个函数处理按键松开事件
//类似处理,省略
}
热心网友
时间:2022-05-12 05:41
你可以试试+2+3+4这些数值,直到你觉得不闪烁,并且速度又适中的追问加10他们都嫌速度慢啊
html5 canvas键盘左右移动矩形的问题
加入一个间隔30ms(举个例子,可以根据实际情况修改)的定时器,当你按下某个键(以左键为例),修改一个全局量bLeftDown=true;定时器中检测bLeftDown,当bLeftDown时,执行 x-=1 操作,当你松开某个按键的时候,修改一个全局量bLeftDown=false;这样就可以比较流畅的移动矩形了 我的空战游戏就是这...
Canvas详解及常见问题
在使用Canvas过程中,遇到一些常见问题时,例如需要清空画布,可以使用clearRect方法传入起点坐标和宽高;绘制直线则通过lineTo传入终点坐标;绘制圆形或椭圆则借助arc方法,它需要圆心坐标、半径、角度参数,以及是否逆时针绘制的指示。同样,fillText和strokeText用于文字渲染,接收文本、起点坐标和可选的最大宽度...
html5 canvas在img标签的图片上绘制矩形框、矩形框为1px时线条模糊问题...
1、根据后端返回的图片list,生成canvas画布, 2、把图片画到canvas里面,再根据后端返回的坐标,在canvas里画矩形框。 此项目中,后端返回的坐标是基于缩略图的,但是前端渲染在页面上的图片,会按宽为788px来显示,所以坐标应该要按照比例来算。 真实的左上x点的计算方式为:真实宽 / 压缩...
html5 canvas怎么画两个矩形
var canvas=document.getElementById('canvas');var ctx =getContext('2d');ctx.beginPath();ctx.lineWidth=1;ctx.strokeStyle="#000";ctx.rect(0,0,10,20);ctx.stroke();ctx.closePath();//用closepath结束绘画,否则可能出现黏连;ctx.beginPath();ctx.lineWidth=1;ctx.strokeStyle="#f00"...
html5canvas好像因为脚本问题无法正常显示,但没找到原因,求指教_百度...
有三个问题:1、createRadialGradient的参数数量不正确,最后一个逗号后面没有参数,这是语法错误;2、createRadialGradient的参数中有canvas变量,这是一个未定义的变量;3、你用了strokeRect来画圆,这是不带填充的,要显示出渐变效果,你需要fillRect方法;剩下的就是具体的位置及颜色设置了;
如何判断浏览器是否支持HTML5Canvas
1、首先,打开html编辑器,新建html文件,例如:index.html。2、在index.html中的<body>标签中,输入js代码:。try{ document.createElement("canvas").getContext("2d");('body').append('支持canvas');} catch (e) { ('body').append('不支持canvas');} 3、浏览器运行index.html页面,此时...
HTML5 canvas scale()的参数问题
40)。如果想要变换起点位置的话,就用translate方法移动原点就行了,比如起点要求不变,就这样:var ctx=drawing.getContext("2d");ctx.strokeRect(20,20,20,20);ctx.translate(-20,-20);ctx.scale(2,2);ctx.strokeRect(20,20,20,20);效果如下:按要求来就行了。希望可以帮到你~~~...
学习html5canvas要多久
看你个人的基础和能力啦,每个人都不太一样,一般学习都是学习的基础的用法一到两个星期就差不多了,实际到项目才能有历练,当然如果你自己行的话可以做些例子练练手。希望能给你帮助。
求html5 canvas制作的连连看源代码。详细分析一下 物体间如何判断连线...
为了用DOM做2D游戏,你基本上要动态地调整元素风格,以便在页面上移动它。虽然有些时候DOM修改是很好的,但这一次我将重点介绍使用HTML5Canvas来制作图像,因为对于现代浏览器,它是最灵活的。页面设置首先,你要创建一个HTML页面,其中包含如下canvas标签:如果你载入以上代码,当然什么也不会出现。那是...
HTML5 Canvas元素绘制地图,如何实现显示鼠标所移动地方名称?
clear移动层。('#eventCanvas').mouseup(function(e){ if(opts.dragAll){ }else{ moveMapContext.clearRect(0, 0, 1100, 630); } draging = false; });小结:功能、原理都很简单,但能熟悉canvas的一些属性和方法。canvas层是可以重叠到一起的,这样就可以在不同的层画不同的内容...