列出Canvas和WebAudio上下文Node.js

时间:2015-06-23 21:47:51

标签: javascript node.js canvas

我正在开发一个专门用于压缩demoscene的工具,针对js1k启动并针对1k-4k类别的prods。 我目前遇到的困难是让它工作并在浏览器和Node.js环境中产生完全相同的结果。

其功能之一需要了解2D,GL和音频上下文的所有方法和属性。它还需要GL常量的值。 但是没有调用任何方法,因此不需要实际的实现。

  

编辑 - 一个更好地了解正在发生的事情的示例

     

给予打包器的原始未压缩代码看起来像这样(在剥离与此处不相关的行之后,例如向n添加颜色的行

c=a.getContext("2d");
e=c.getImageData(0,0,150,150);
c.fillStyle=n=c.createRadialGradient(225,75,25,225,75,60);
c.fillRect(150,0,150,150);
  

打包器计算最佳哈希值,在本例中为i[0]+i[6]。然后它替换代码中的方法,并预先设置一个循环来执行散列(输出是独立的,因此它包含解压缩例程)。否则,在运行时,js解释器无法理解c.cR()实际上是context.createRadialGradient()。以下是生成的代码:

for(i in c=a.getContext("2d"))c[i[0]+i[6]]=c[i];
e=c.gg(0,0,150,150);
c.fillStyle=n=c.cR(225,75,25,225,75,60);
c.fc(150,0,150,150);
  

如果发生冲突(多种方法导致相同的散列字符串),则不执行替换。

在浏览器中,可以简单地创建适当上下文的实例并迭代其方法/属性。但是,Node.js不提供这种可能性。我需要另一种方法来获取这些信息。

类似问题的答案(2d canvasWebAudio)建议使用Canvas moduleNode WebAudio API。然而,这些模块不是其浏览器对应物的完美镜像,具有其他方法或其子集。在某些情况下,这将导致散列算法产生不同的输出。

不幸的是,这排除了解决方案,因为在两种环境中都需要相同的结果。还有哪些其他选择?提前谢谢。

0 个答案:

没有答案