我的浏览器内 LED Display
对象将 LED
对象存储在其 map
属性中。每个LED
都有x
和y
属性,以便知道它在 Canvas 上的位置,而map
是一个2D将 LED 映射到显示矩阵上的 LED
数组(可以具有不同的大小)。显示对象还具有定义 LED 区域以及它们之间的空间的属性。
显示器应该能够显示预制字体中的字符,例如数字和字母。
我无法理解的是:显示字符的最佳方式是什么?例如,以下是字母“S”的示例(.
是 LED 显示屏关闭,O
是 LED 显示屏打开:
..OO..
.OOOO.
OO..OO
OO....
.OO...
..OO..
...OO.
OO.OO.
.OOO..
..OO..
我应该如何映射要打开哪些 LED?
我当前的解决方案是:创建一个具有属性x
和y
(决定它在显示矩阵上的位置)的Character
对象以及宽度
和高度
(决定了LED的面积)。然后将应该打开的 LED 映射到 2D 阵列中。当我们需要显示一个字符时,我们获取Character
的x
和y
,找到“source”LED,然后切换LED
按映射亮起。
还有更好的办法吗?也许使用路径?
最佳答案
根据您的描述,我不能完全确定您是如何做到这一点的,但根据我认为您所追求的目标,我将按照以下方式进行操作。
第一步,在数组中计算出所有字符,定义哪些点需要打开或关闭 LED。如果这将是一个大集合,您可以尝试一些技术来压缩数据。
根据 Canvas 上 LED 的大小,我可以创建一个函数来计算哪些 LED 需要更改,并且仅删除需要更改的 LED 的显示屏。预渲染一次 LED(打开和关闭状态),就像 openGL 中的显示列表(请参阅下面的链接)。
否则,如果屏幕上的字符本身很小并且有很多字符,我会预渲染每个整个字符并像字体一样使用。这需要更多的屏幕清理,但如果有数百个 LED,计算和显示清理的开销可能会很高。
此页面提供了一些有关高效 Canvas 渲染的有用信息: http://www.html5rocks.com/en/tutorials/canvas/performance/
我假设 LED 是在程序中渲染的,而不仅仅是图像?如果它们只是图像,那么您已经有效地预渲染了 LED。
关于javascript - 使用 <canvas> 制作浏览器内 LED 显示屏 : how do I go about creating characters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10313530/