首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用Paperjs代码时,Paperjs导致类语法错误

不使用Paperjs代码时,Paperjs导致类语法错误
EN

Stack Overflow用户
提问于 2019-11-14 07:47:12
回答 1查看 625关注 0票数 2

使用Paperjs:

代码语言:javascript
复制
<script type="text/javascript" src="paper.js"></script>
<script type="text/paperscript" canvas="myCanvas" src="myapp.js"></script>

尝试在myapp.js中创建类:

代码语言:javascript
复制
class Petal {
  constructor(index, x, y, diameter, round) {
    this.index = index;
    this.x = x;
    this.y = y;
    this.diameter = diameter;    
    this.round = round;

这在paper.js:15421:12的paper.js(不是我的代码,这是paperjs框架)中创建了一个“语法错误意外令牌”。

它指的是这样(第4行是14521):

代码语言:javascript
复制
  function raise(pos, message) {
    var loc = getLineInfo(input, pos);
    message += " (" + loc.line + ":" + loc.column + ")";
    var err = new SyntaxError(message);
    err.pos = pos; err.loc = loc; err.raisedAt = tokPos;
    throw err;
  }

我对这样的编程是个新手,我只是被难住了。我制作的类甚至没有使用paperjs中的任何代码,所以我不知道为什么它会在paper.js文件中创建一个错误。也是堆栈溢出的新手,所以请告诉我我做错了什么。

EN

回答 1

Stack Overflow用户

发布于 2019-11-14 20:34:12

通过在<script>标记上指定type="text/paperscript",您可以将代码加载为PaperScript而不是JavaScript

这意味着在将其传递给浏览器JavaScript引擎之前,Paper.js将首先对其进行解析。

为了解析您的代码,Paper.js使用了acorn,一个解析器库。与Paper.js捆绑在一起的acorn版本不支持ES6语法。

为了避免这种情况,您可以在加载Paper.js之前加载更新版本的acorn (支持ES6)。

这实际上就是在Paper.js操场上做的事情:http://sketch.paperjs.org/

这是一个演示解决方案的fiddle

请注意,我使用https://unpkg.com快速加载最新版本的npm包,但是您可以从您想要的任何位置加载它们。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Debug</title>
    <!-- Load latest acron version first -->
    <script type="text/javascript" src="https://unpkg.com/acorn"></script>
    <!-- Then load Paper.js -->
    <script type="text/javascript" src="https://unpkg.com/paper"></script>
    <style>
      html,
      body {
          margin: 0;
          overflow: hidden;
          height: 100%;
      }

      canvas {
          width: 100%;
          height: 100%;
      }
    </style>
</head>
<body>
<canvas id="canvas" resize></canvas>
<script type="text/paperscript" canvas="canvas">
// Here you can now use ES6 syntax.
class MyClass {
    constructor() {
        new Path.Circle({
            center: view.center,
            radius: 50,
            fillColor: 'orange'
        })
    }
}

const myInstance = new MyClass();
</script>
</body>
</html>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58847325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档