Paperjs - 在多个 paperscript 文件中访问 类

Paperjs - Access classes in multiple paperscript files

我想在一个 Paperscript 范围内使用多个 .js 文件,如下所示:

<script type="text/paperscript" src="block.js" canvas="canvas"></script>
<script type="text/paperscript" src="main.js" canvas="canvas"></script>

在block.js中我定义了一个class如下:

function Block(point) {
  // create a Path.Rectangle here
}

并且在 main.js 中,我想创建 Block class 的一个实例,如下所示:

function onMouseDown(event) {
  var myBlock = new Block(event.point);
  // do extra work here
}

但是,我收到以下错误:

Uncaught ReferenceError: Block is not defined - in main.js

但是,如果我在 block.js 中实例化块 class,它就会按预期工作。

如何在同一范围内使用多个 paperscript js 文件并在另一个文件中访问一个文件中定义的 classes?

我正在使用 paperjs-v0.9.25 并使用 Chrome.

进行测试

你有三个选择:

  1. 连接所有 JavaScript 个文件,使它们成为一个文件。
  2. 使用 JavaScript 模式的纸张,而不是 PaperScript 模式。
  3. 明确地使你的声明成为全球性的,例如,window.Block = function(point) {...}

我总是使用 JavaScript 所以从来没有 运行 进入这个。这是 paperjs 教程的 link:http://paperjs.org/tutorials/getting-started/using-javascript-directly/.

问题是 paper 使用提供您引用的 paper 对象的函数调用来包装 code.js 中的代码。以下是论文生成的内容:

paper._execute = function(Rectangle,Path) {

function Block(point) {
    var r = new Path.Rectangle(point, [100, 100]);
    r.strokeColor = 'black';
    return r;
}

var b = new Block([100, 100]);


//# sourceMappingURL=data:application/json;base64,eyJ2ZXJza...JdfQ==
}

因为您的 Block 声明在一个函数中,所以它的定义是该函数的局部。