Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Paperjs-访问多个paperscript文件中的类_Javascript_Paperjs - Fatal编程技术网

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

Javascript Paperjs-访问多个paperscript文件中的类,javascript,paperjs,Javascript,Paperjs,我希望在一个Paperscript范围内使用多个.js文件,如下所示: <script type="text/paperscript" src="block.js" canvas="canvas"></script> <script type="text/paperscript" src="main.js" canvas="canvas"></script> function Block(point) { // create a Path.R

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

<script type="text/paperscript" src="block.js" canvas="canvas"></script>
<script type="text/paperscript" src="main.js" canvas="canvas"></script>
function Block(point) {
  // create a Path.Rectangle here
}
function onMouseDown(event) {
  var myBlock = new Block(event.point);
  // do extra work here
}
在main.js中,我想创建Block类的一个实例,如下所示:

<script type="text/paperscript" src="block.js" canvas="canvas"></script>
<script type="text/paperscript" src="main.js" canvas="canvas"></script>
function Block(point) {
  // create a Path.Rectangle here
}
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进行测试。

您有三种选择:

  • 连接所有JavaScript文件,使其成为单个文件
  • 在JavaScript模式下使用纸张,而不是PaperScript
  • 显式地使您的声明全局化,例如,
    window.Block=function(point){…}
  • 我总是使用JavaScript,所以从未遇到过这种情况。以下是paperjs教程的链接:

    问题在于,paper在code.js中用一个函数调用包装代码,该函数调用提供您引用的paper对象。以下是纸张生成的内容:

    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==
    }
    
    因为块的声明在函数中,所以它的定义是该函数的局部定义