Articles of html canvas

如何使用spritesheet使用createPattern?

假设我有一个这样的spritesheet 我想在(1,1)处使用污渍瓷砖。 我知道我可以使用createPattern重复整个图像,但是如何从图像的图块部分创建图案? 到目前为止,我有这个 var pattern = ctx.createPattern(img, 'repeat'); ctx.fillStyle = pattern; ctx.fillRect(x, y, w, h); 我知道我可以使用重复调用ctx.drawImage但是有可能使用模式获得相同的效果?

Facebook的canvas和Facebook的Web项目有什么区别?

我正在为Facebook上的cocos2d-JS做一个游戏。 Facebook的canvas和Facebook的Web项目有什么区别? 据我所知,Facebook的Canvas要求安全的url和Web请求网站的URL。

平铺 – 移动所有瓷砖

我正在拼贴地图。 我很快跑出了我的地图北部的房间,并希望“转移”下来的瓷砖。 我宁愿不必重做每个瓦片层。 这可能吗? 这是我的小地图的图片。 我想把它们移到红场周围。

限制对套接字端点的访问

我正在开发一个基于socket.io和box2d物理引擎的多人游戏canvas游戏。 有没有办法限制到我的套接字端点的连接,只允许来自特定域的连接? window.socket = io.connect('http://mysite:8080'); 我不希望人们能够使用我目前可能的终点。 他们可以使用上面的代码,然后根据服务器的响应emits “操纵”客户端逻辑。

无限空间2D地图 – 如何在JS中实现

我不完全确定如何在JS中实现这一点。 所以我想有一个2D无限的地图,但不是平铺的。 坐标只在那里,所以如果你在空间周围旅行,你知道你在什么坐标。 或者,如果我想在这里和那里添加几件事,我可以指定展示位置的坐标。 所以坐标只能作为网格点,但是我怎么才能在JS中实现呢? 另外,我将如何去存储我想要添加到地图的不同的东西。 这意味着这不是程序或任何东西,它是静态的,一个静态的地图。 我可以使用canvas网格系统吗?

碰撞检测不工作,因为有些事情一次移动超过1px

我正在使用canvas在JavaScript中编写一个2D滚动游戏,并且由于我限于setInterval,每ms至less运行一次,所以我需要让一些对象以每秒大于1个像素的速度移动。 我有这个对象之间的碰撞检测: // ** oversee collisions collisionsInterval = setInterval(function() { // outter object for(i = 0; i < objectsToCollision.length; i++) { // inner object for(j = 0; j < objectsToCollision.length; j++) { // dont compare an object to itself if(i==j) continue; // check if they touch on x axis if(Math.abs(objectsToCollision[i].centerX – objectsToCollision[j].centerX) <= (objectsToCollision[i].halfWidth + […]

在canvas/ javascript中绘制等轴测图

我的瓷砖地图devise有问题。 我设置了一个玩家的位置,这个位置就是帆布正在看的中间的瓦片。 如何计算将它们放在x:y像素位置是完全搞砸了我,我不知道如何解决它。 这是我试过的: var offset_x = 0; //used for scrolling on x var offset_y = 0; //used for scrolling on y var prev_mousex = 0; //for movePos function var prev_mousey = 0; //for movePos function function movePos(e){ if (prev_mousex === 0 && prev_mousey === 0) { prev_mousex = e.pageX; prev_mousey = e.pageY; } offset_x […]

缓慢的Firefox Javascriptcanvasperformance?

作为前一篇文章的后续文章,我一直在试图找出使用Javascript和canvas元素绘制场景时出现的一些放缓现象。 我决定把我的注意力集中到一个真正准系统的animation上,这个animation只清除canvas,并且每帧只画一个图像。 这当然在Chrome浏览器中运行起来很顺畅,但是它仍然在Firefox中结束。 我添加了一个简单的FPS计算器,事实上,看起来我的网页在运行Firefox时通常会在50年代获得FPS。 这对我来说并不合适,我一定在这里做错了事。 任何人都可以看到我可能正在做的事情导致这种FPS下降? <!DOCTYPE HTML> <html> <head> </head> <body bgcolor=silver> <canvas id="myCanvas" width="600" height="400"></canvas> <img id="myHexagon" src="Images/Hexagon.png" style="display: none;"> <script> window.requestAnimFrame = (function(callback) { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60); }; })(); var animX = 0; var frameCounter = 0; var […]

旋转方法之间的区别?

我的问题是关于android.graphics.Camera旋转方法。 在Docs ,我看到了这些评论: public void rotateX(float deg)从以下版本开始:API级别1 应用围绕X轴的旋转变换。 public void rotate(float x,float y,float z)从以下版本开始:API Level 12 在所有三个轴上应用旋转变换。 有我的问题:使用rotate (float x, float y, float z)和一系列rotate方法有什么区别? 例如,这两个片段A和B之间有什么区别? 一个) camera.rotate (x, y, z); B) camera.rotateX (x); camera.rotateY (y); camera.rotateZ (z);

在BufferStrategy中绘制Java的低FPS

我在使用BufferStrategy时遇到了一个非常奇怪的问题,我试过寻找一个答案,但是我发现的都是不相关的线程和讨论。 所以这是我的查询。 for (int i = 0; i < 10; i++){ for (int x = 0; x < 10; x++){ g.drawImage(enlImg(getImg(terrain, x), 4), i*40, x*40, null); } } (参数'terrain'是一个预加载的BufferedImage,它将被用来从中获取一个子图像。) 我想绘制图像到一个canvas,其中“g”是缓冲区策略,“getDrawGraphics()”,因为这是我如何绘制到BufferStrategy。 无论如何,直接点。 我只得到〜3fps。 我知道这只是绘制100张图片,但是其他游戏吸引了数十万没有滞后…任何想法? 这是否可能是因为试图一次放大,绘制并获得一个子图像,还是因为我的电脑? 额外 enlImg()代码 public BufferedImage enlImg(BufferedImage image, int x){ BufferedImage enlargedImage = new BufferedImage(image.getWidth() * x, image.getHeight() * x, image.getType()); for (int […]