我有3个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>
<{1>}中的,我们有一个名为map.js
,我们有一个名为drawMap()
要求:我想从main.js调用这些函数。
我看过这篇文章 Paperscope and paperjs
并按照这些说明操作 https://groups.google.com/forum/#!msg/paperjs/C6F0XFlplqM/_67AMqCR_nAJ
但我不确定如何以及在何处建立和调用PaparScope对象。
仍然无法正常工作。
这很接近:Paper.js Interoperability
但我需要的是另一种方式。
答案 0 :(得分:3)
您需要从外部导出要呼叫的功能,例如:
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(由绑定到分隔画布的PaperScript代码创建),因此需要在调用处理给定画布的函数之前激活正确的范围。最好直接在drawMap()
和drawLegend()
函数中执行此操作,因此从外部调用时无需担心。
在PaperScript中,this
指向范围,因此您可以在函数外执行此类操作:
var scope = this;
然后在函数内部:
scope.activate();