从外部调用 paperscript 中的函数
Call a function inside paperscript from outside
我有 3 个 JS 文件。
- main.js
- map.js
- legend.js
map.js 和 legend.js 是 2 种不同画布的论文。
他们是这样从 HTML 调用的。
<script type="text/javascript" src="main.js"></script>
<script type="text/paperscript" src="map.js" canvas="mapCanvas"></script>
<script type="text/paperscript" src="legend.js" canvas="legendCanvas"></script>
在map.js
中,我们有一个名为drawMap()
的函数
在legend.js
中,我们有一个名为drawLegend()
的函数
显然他们操纵自己的画布。
要求: 我想从 main.js.
调用那些函数
我看过这个post
Paperscope and paperjs
并遵循这些说明
https://groups.google.com/forum/#!msg/paperjs/C6F0XFlplqM/_67AMqCR_nAJ
但我不确定如何以及在何处构建和调用 PaparScope 对象。
还是不行。
这很接近:Paper.js Interoperability
但我需要的是反过来
您需要将要从外部调用的函数导出,例如:
window.drawMap = drawMap;
window.drawLegend = drawLegend;
然后它们成为全局变量,您可以从外部调用它们。
一种更优雅的方式可能是在全局范围内定义一个容器,例如(在 PaperScript 代码之前执行的正常 JavaScript 脚本标记中,例如在您的 main.js
中):
var globals = {};
然后以相同的方式从 PaperScript 访问并填充此容器:
globals.drawMap = drawMap;
globals.drawLegend = drawLegend;
之后,您可以从任何 JavaScript 或 PaperScript 使用它们:
globals.drawMap();
globals.drawLegend();
更新:
由于您使用多个 PaperScope(由绑定到 canvases 的 PaperScript 代码创建),您需要在调用处理给定 [=40] 的函数之前激活正确的范围=].最好直接在 drawMap()
和 drawLegend()
函数中执行此操作,这样从外部调用时就不必担心。
在 PaperScript 内部,this
指向作用域,所以你可以在函数外部做这样的事情:
var scope = this;
然后在函数内部:
scope.activate();
我有 3 个 JS 文件。
- main.js
- map.js
- legend.js
map.js 和 legend.js 是 2 种不同画布的论文。 他们是这样从 HTML 调用的。
<script type="text/javascript" src="main.js"></script>
<script type="text/paperscript" src="map.js" canvas="mapCanvas"></script>
<script type="text/paperscript" src="legend.js" canvas="legendCanvas"></script>
在map.js
中,我们有一个名为drawMap()
在legend.js
中,我们有一个名为drawLegend()
显然他们操纵自己的画布。
要求: 我想从 main.js.
调用那些函数我看过这个post Paperscope and paperjs
并遵循这些说明 https://groups.google.com/forum/#!msg/paperjs/C6F0XFlplqM/_67AMqCR_nAJ
但我不确定如何以及在何处构建和调用 PaparScope 对象。
还是不行。
这很接近:Paper.js Interoperability
但我需要的是反过来
您需要将要从外部调用的函数导出,例如:
window.drawMap = drawMap;
window.drawLegend = drawLegend;
然后它们成为全局变量,您可以从外部调用它们。
一种更优雅的方式可能是在全局范围内定义一个容器,例如(在 PaperScript 代码之前执行的正常 JavaScript 脚本标记中,例如在您的 main.js
中):
var globals = {};
然后以相同的方式从 PaperScript 访问并填充此容器:
globals.drawMap = drawMap;
globals.drawLegend = drawLegend;
之后,您可以从任何 JavaScript 或 PaperScript 使用它们:
globals.drawMap();
globals.drawLegend();
更新:
由于您使用多个 PaperScope(由绑定到 canvases 的 PaperScript 代码创建),您需要在调用处理给定 [=40] 的函数之前激活正确的范围=].最好直接在 drawMap()
和 drawLegend()
函数中执行此操作,这样从外部调用时就不必担心。
在 PaperScript 内部,this
指向作用域,所以你可以在函数外部做这样的事情:
var scope = this;
然后在函数内部:
scope.activate();