草庐IT

Canvas-EventSystem-Panel

全部标签

performance - HTML5 Canvas 性能 : Loading Images vs Drawing

我正计划使用javascript/canvas编写游戏,我只有一个问题:关于加载图像与仅使用canvas的方法绘图相比,我应该考虑什么样的性能考虑因素。因为我的游戏将使用非常简单的几何图形(圆形、正方形、直线),所以这两种方法都易于使用。我还计划在游戏中实现一个简单的粒子引擎,所以我希望能够在不影响性能的情况下绘制很多小物体。想法? 最佳答案 如果您正在绘制带有实心填充的简单形状,那么程序化绘制它们是最适合您的方法。如果您要使用笔触、渐变填充和其他对性能敏感的化妆品绘制更详细的实体,您最好使用图像Sprite。程序生成图形并不总是高

javascript - 获取 Canvas 上下文的最后一个点的坐标

我想用CanvasRenderingContext2D.prototype创建一个arrowTo函数。为此,我需要获取最后一点的坐标,例如//...varctx=someCanvas.getContext('2d');ctx.moveTo(10,40);//thecoordinatesofthelastpointarenow(10,40)ctx.lineTo(50,50);//andnowit's(50,50)//...我怎样才能取回它们? 最佳答案 您必须自己跟踪它们。或者做一些不可思议的事情,覆盖moveTo/lineTo以通过

html - Canvas 背景和 HTML <body> 元素

根据spec:ItisrecommendedthatauthorsofHTMLdocumentsspecifythecanvasbackgroundfortheBODYelementratherthantheHTMLelement.但是并没有说它有什么优势。为什么规范推荐这个?附言当我看到Extrascrollbarwhenbodyheightis100vh时,我想到了:将背景简单地提供给html元素不是更好吗? 最佳答案 在CSS之前,通过将background和bgcolor属性添加到HTML中的body元素来指定背景(以及类似

javascript - 在另一个 Canvas 中添加 Canvas : obj. setCoords 不是函数(fabric js)

开始使用fabric.js并尝试在另一个Canvas中添加一个Canvas,以便顶部Canvas保持不变,我将向内部Canvas添加对象。这是将一个Canvas添加到另一个Canvas的片段。canvas=newfabric.Canvas('artcanvas');innerCanvas=newfabric.Canvas("innerCanvas");canvas.add(innerCanvas);我的html看起来像这样成功添加这些后,我要做的是,将坐标添加到内部Canvas,以便最终用户看起来像一个在另一个上。但是,尝试过的代码遇到了以下错误UncaughtTypeError:ob

javascript - HTML5 Canvas : How to handle mousedown mouseup mouseclick

我一直在玩html5Canvas,遇到了一个问题。canvas.onmousedown=function(e){dragOffset.x=e.x-mainLayer.trans.x;dragOffset.y=e.y-mainLayer.trans.y;canvas.onmousemove=mouseMove;}canvas.onmouseup=function(e){canvas.onmousemove=null;}canvas.onmouseclick=mouseClick;functionmouseMove(e){mainLayer.trans.x=e.x-dragOffset.x

html - 如何在 Canvas 中强制显示更新

如果我快速连续地在Canvas上绘制很多东西,例如循环中的context.fillRect,浏览器似乎在显示任何绘图之前等待循环完成(可能通过双缓冲)有没有办法强制浏览器在每次绘制操作后显式或隐式地更新显示? 最佳答案 您看不到结果并不是因为任何双缓冲,而是因为Web浏览器中的JavaScript是单线程的。如果您类似地在JavaScript中创建一个循环,重复执行类似myDiv.style.top=parseInt(myDiv.style.top)+1+"px";的操作,您会发现没有明显的变化在浏览器中——甚至会持续很多秒——直到

javascript - 没有 Canvas 的 HTML 线条图(仅 JS)

我正在尝试使用HTML并在页面上画一条线。从我读过的所有内容来看,HTML5canvas标签是最好用的,但我需要这条线连接到页面上不在canvas标签中的东西,所以canvas对我不好(想要/需要使用原生JS)。我已经(从我发现的东西)写了一个函数来完成我需要的,但问题是一旦出现一行,页面的其他所有内容都会消失。我发现每次我在JavaScript中更改样式时,除了形状之外的所有内容都会消失。删除“document.write”并没有消失。functiondraw(ax,ay,bx,by){varn,widthLine,i,x,y;widthLine=1;if(Math.abs(ax-b

html - 清除 Canvas 矩形(但保留背景)

我正在尝试制作一个圆圈的动画并水平移动它,效果很好。然而,当圆圈移动时,我必须对该圆圈执行clearRect操作,以便它在水平方向上自行重绘。当我执行clearRect时,它还会使背景周围有白色框,因此它会成为圆圈移动方向上的一条白色水平线。有没有不用clearRect来清除圆圈的方法?如果我必须在clearRect之后继续重绘背景,当该区域有10个圆圈移动时,Canvas会闪烁。还有其他方法可以解决这个问题吗?functiondrawcircle(){clear();context.beginPath();context.arc(X,Y,R,0,2*Math.PI,false);co

javascript - Canvas 标签中的 addEventListener

我有一个用于创建图形的Canvas标签。在我的行的每一部分,我都有一个“点”来启用“鼠标悬停”并显示更多细节。当我不向该点添加事件监听器时,一切正常。Firebug正在警告我:s.addEventListenerisnotafunction...是否可以创建动态事件监听器?(我是Javascript的新手) 最佳答案 您不能将DOM事件附加到DOM对象(元素)以外的事物。canvas是一个DOM元素,您绘制到Canvas上的东西不是。它们作为img的像素成为Canvas的一部分。为了检测对Canvas上特定点的点击,您必须在Canv

javascript - 如何用html5 canvas元素绘制透明图片

我的目标是谷歌浏览器。是否可以在Canvas上绘制透明图像?我所说的透明是指以50%的不透明度绘制整个图像。 最佳答案 您可以使用globalAlpha属性来执行此操作,如下所示:varcanvas=document.getElementById("myCanvas");varcontext=canvas.getContext("2d");context.globalAlpha=0.5;varmyImage=newImage();myImage.src="someImage.jpg";myImage.onload=function(