外部脚本在 PaperJS v0.9.22 中不起作用

External script not working in PaperJS v0.9.22

我是 paperJS 的新手,我想在 html 中包含一个外部 paperscript 文件,但它不起作用。虽然内联脚本运行良好。我的代码是:

HTML代码:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="js/paper.js"></script>
</head>
<body>
    <script type="text/paperscript" src = "js/myScript.js" canvas = "myCanvas" >
    </script>
    <canvas id="myCanvas" resize></canvas>

paperScript代码(myScript.js):

// Create a Paper.js Path to draw a line into it:
var path = new Path();
// Give the stroke a color
path.strokeColor = 'black';
var start = new Point(100, 100);
// Move to start and draw a line from there
path.moveTo(start);
// Note the plus operator on Point objects.
// PaperScript does that for us, and much more!
path.lineTo(start + [ 100, -50 ]);

我在 Whosebug 上发现了一个旧的 link,它说使用版本 0.9.10 可以解决这个问题。但是这个问题在新版本中还没有解决吗? 这是 link:

How to use paperscript from external source?

根据此处的信息,我唯一的猜测是您正在加载 paper-core.js,而不是 paper-full.js。 paperscript 未在 paper-core.js.

中实现

如果它是 paper-core.js 的行为将是您的代码永远不会被调用,因为没有什么可以解释 paperscript。

这不是 paperJs 问题。在这里,我试图从本地文件系统加载资源,chrome 不允许(违反其同源策略),因此我们需要一个本地 Web 服务器。Why?

可以使用 WAMP(在 Windows 上)、MAMP(在 OS X 上)、LAMP(对于 ubuntu)设置本地 Web 服务器。它也可以通过 Python http-server 和 NodeJS http-server 来设置。

实际上我通过 Udemy 的另一个学生找到了解决方案 -Git link here。转到 paper-full.js(它仅适用于下载的版本,不适用于 CDN)并转换行

xhr.open((options.method || 'get').toUpperCase(), options.url,
Base.pick(options.async, true));    

成才

xhr.open((options.method || 'get').toUpperCase(), options.url);

我知道这不能用于普通网站,因为它违反了安全协议,所以它只是为了练习。根据 Paperjs,异步方法是可选的。顺便说一句,对我来说它适用于 Firefox,但不适用于 Chrome.