标签: html5-canvas

HTML5 Canvas相机/视口 - 如何实际操作?

我确定之前已经解决了1000次:我得到了一个960*560大小的画布和一个大小为5000*3000的房间,其中应该只画出960*560,这取决于玩家的位置.玩家应该始终位于中间,但是当接近边界时 - 应该计算最佳视图).玩家可以使用WASD或箭头键完全免费移动.并且所有物体都应该自己移动 - 而不是我移动除了玩家之外的所有其他东西以创造玩家移动的幻觉.

我现在发现了这两个问题:

HTML5 - 为画布创建一个视口,但仅适用于此类游戏,我无法重现我的代码.

更改html5画布的视图"中心"似乎更有前途,也更有说服力,但我只是理解它相对于播放器正确绘制所有其他对象而不是如何相对于播放器滚动画布视口,我想要当然要先实现.

我的代码(简化 - 游戏逻辑是单独的):

var canvas = document.getElementById("game");
canvas.tabIndex = 0;
canvas.focus();
var cc = canvas.getContext("2d");

// Define viewports for scrolling inside the canvas

/* Viewport x position */   view_xview = 0;
/* Viewport y position */   view_yview = 0;
/* Viewport width */        view_wview = 960;
/* Viewport height */       view_hview = 560;
/* Sector width */          room_width = 5000;
/* Sector height */         room_height = 3000;

canvas.width …
Run Code Online (Sandbox Code Playgroud)

javascript html5 canvas viewport html5-canvas

44
推荐指数
3
解决办法
6万
查看次数

是否可以创建没有DOM元素的HTML画布?

我想要一个HTML画布上下文,我可以绘制并在屏幕外阅读(在这个例子中,写文本和阅读创建的形状,但这是一个普遍的问题).我可能还想使用画布作为屏幕外帧缓冲.

我想我可以创建一个隐藏的DOM元素,但我宁愿用JavaScript创建它(我可能想在运行时创建和销毁一些画布).

可能?

javascript html5 html5-canvas

42
推荐指数
3
解决办法
4万
查看次数

动态生成的图标

是否可以使用JavaScript和HTML动态生成图标,使用当前页面的图标作为背景,以及前景中的随机数?

例如,假设当前的favicon看起来与此类似:

======================
====XXXXXXXXXXXXXX====
====X=================
====X=================
====X=====XXXXXXXX====
====X============X====
====X============X====
====XXXXXXXXXXXXXX====
======================
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我怎样才能使用JavaScript和HTML让它看起来与此类似:

======================
====XXXXXXXXXXXXXX====
====X=================
====X=================
====X=====XXXXXXXX====
====X=========--111--=
====X=========--1-1--=
====XXXXXXXXXX----1--=
==============--1111-=
Run Code Online (Sandbox Code Playgroud)

地图::
=白色背景
x:原始Favicon图像
-:红色生成的图像,带有数字
1:白色文本

思路:

  • 帆布?
  • 数据Uri?

html javascript favicon html5-canvas

42
推荐指数
2
解决办法
6736
查看次数

你可以使用canvas.getContext('3d')吗?如果有,怎么样?

我在HTML5中阅读了canvas标签,并且总是看到getContext('2d').
参数是'2d',所以不存在像'3d'这样的另一种可能性吗?
而且,你怎么能用它呢?我之前尝试过3D,但并没有真正理解(由于非解释性教程).任何教程?

html5 canvas html5-canvas

41
推荐指数
4
解决办法
6万
查看次数

设置画布toDataURL jpg质量

我想在将canvas元素编码为jpg时设置质量设置.

var data = myCanvas.toDataURL( "image/jpeg" );
Run Code Online (Sandbox Code Playgroud)

不给我一个高质量的选择.我可以使用替代库吗?

相关:不同浏览器使用的默认质量设置是什么?

javascript png jpeg image html5-canvas

41
推荐指数
2
解决办法
6万
查看次数

40
推荐指数
2
解决办法
1万
查看次数

使用HTML5和JavaScript从视频中捕获帧

我想每隔5秒从视频中捕捉一帧.

这是我的JavaScript代码:

video.addEventListener('loadeddata', function() {
    var duration = video.duration;
    var i = 0;

    var interval = setInterval(function() {
        video.currentTime = i;
        generateThumbnail(i);
        i = i+5;
        if (i > duration) clearInterval(interval);
    }, 300);
});

function generateThumbnail(i) {     
    //generate thumbnail URL data
    var context = thecanvas.getContext('2d');
    context.drawImage(video, 0, 0, 220, 150);
    var dataURL = thecanvas.toDataURL();

    //create img
    var img = document.createElement('img');
    img.setAttribute('src', dataURL);

    //append img in container div
    document.getElementById('thumbnailContainer').appendChild(img);
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是生成的前两个图像是相同的,并且不生成持续时间为5秒的图像.我发现缩略图是在特定时间的视频帧显示在< video>标签之前生成的.

例如,当video.currentTime = 5生成帧0的图像时.然后视频帧跳到5秒.因此,当video.currentTime = 10 …

javascript video html5 canvas html5-canvas

39
推荐指数
1
解决办法
5万
查看次数

从上下文获取画布

有没有办法获得上下文用于的画布?

我问的原因是因为我正在创建一个原型函数CanvasRenderingContext2D,我需要画布元素的宽度/高度.

例如:

var cv = document.getElementById('canvas');
var ctx = cv.getContext('2d');
// Using only 'ctx', how to get 'cv'?
Run Code Online (Sandbox Code Playgroud)

javascript html5-canvas

38
推荐指数
1
解决办法
3万
查看次数

使用Canvas和AngularJS

我正在接受一项任务,在HTML5中重写以下Flash应用程序:

http://www.docircuits.com/circuit-editor

鉴于应用程序的复杂性和我迄今为止的研发,我已经将AngularJS确定为实现的首选MVC框架.该应用程序有各种部分,如面板,菜单,属性,图表等,我相信所有这些都可以在AngularJS中轻松实现.

然而,关键问题是组件设计和交互(诸如拖放,移动,线处理等)需要基于Canvas,因为我已经能够使用Flash导出所有矢量图形CreateJS工具包(http://www.adobe.com/in/products/flash/flash-to-html5.html)到Canvas库而不是SVG.

问题是在"画布内的单个对象"和AngularJS之间没有明确的通信方式.我查看了以下示例,但几乎所有示例都在canvas对象上工作,而不是处理Canvas中的各个组件:

AngularJS绑定到WebGL/Canvas

是否已经为AngularJS制作了画布绘图指令?

我有点被困在这里,不知道该怎么做.真的很感激一些评论:

  • AngularJS是否是正确的选择?

  • 我应该尝试在另一个库中实现Canvas部分(例如Fabric.js,kinect.js,Easel.js)并将其与Angular集成(现在这似乎也是一项太大的任务)?

  • 如果不是上述内容,我应该切换到哪个其他框架可以轻松处理画布以及面板,菜单,图表等其他功能?

canvas html5-canvas angularjs

38
推荐指数
2
解决办法
4万
查看次数

Three.js检测webgl支持并回退到常规画布

任何使用过three.js的人都可以告诉我是否有可能检测到webgl支持,如果不存在,可以回退到标准的Canvas渲染吗?

javascript webgl three.js html5-canvas

37
推荐指数
2
解决办法
3万
查看次数