我想从页面中的HTML按钮调用paper.js函数,但我相信paper.js函数存在于它们自己的作用域中。paper.js文档提到了互操作性,这听起来是正确的,然后把我带到一个页面,上面写着“即将到来”:
http://paperjs.org/tutorials/getting-started/paperscript-interoperability/
谁知道如何从我的超文本标记语言页面调用在paper.js脚本中创建的函数?
发布于 2014-09-28 16:41:40
对那篇缺失的教程表示歉意。最后,我真的会花一些时间来写它。
我在去年的邮件列表中回答了这个问题:https://groups.google.com/d/msg/paperjs/C6F0XFlplqM/_67AMqCR_nAJ
作用域的PaperScript在全局作用域内运行,并且可以访问全局作用域的所有元素。在全局作用域(= PaperScopes )中运行的普通窗口将看不到这些窗口,也无法访问它们的变量。
在两者之间交换信息有一个简单的解决方案:只需声明一个用于来回交换内容的全局结构,例如
window.globals = {
someValue: 10,
someFunction: function() { alert(globals.someValue); }
};在你的PaperScript中,你可以简单地通过‘
’来访问它,因为它在窗口范围内:
globals.someValue = 20;
globals.someFunction();以同样的方式,您可以使用普通JavaScript中的这种结构。
发布于 2016-09-27 05:53:14
我只是想为遇到这种情况的任何人补充一些澄清。
对于PaperScript-to-JavaScript的互操作性,请执行以下操作...
在HTML文件中:
<button type="button" id="btn">Click Me!</button>在JavaScript文件中:
$(document).ready(init);
function init(jQuery) {
$("#btn").click(window.globals.paperClicked);
}
// PaperScript Interop
window.globals = {
paperClicked: function() {}
}在PaperScript文件中:
// JavaScript Interop
globals.paperClicked = internalClicked;
function internalClicked() {
alert('clicked!');
}https://stackoverflow.com/questions/24439046
复制相似问题