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

时间:2015-11-06 08:15:46

标签: javascript paperjs

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

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

在block.js中我按如下方式定义一个类:

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

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

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

但是,我收到以下错误:

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

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

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

我正在使用paperjs-v0.9.25并使用Chrome进行测试。

1 个答案:

答案 0 :(得分:1)

您有三种选择:

  1. 连接所有JavaScript文件,使它们只是一个文件。
  2. 在JavaScript中使用纸张,而不是PaperScript,模式。
  3. 明确地将您的声明设为全局,例如window.Block = function(point) {...}
  4. 我总是使用JavaScript,所以从来没有碰到过这个。这是paperjs教程的链接:http://paperjs.org/tutorials/getting-started/using-javascript-directly/

    问题在于,纸张使用函数调用将代码包装在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声明是在一个函数中,它的定义是该函数的本地定义。