首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Paper.js互操作性

Paper.js互操作性
EN

Stack Overflow用户
提问于 2014-06-27 03:51:12
回答 2查看 2.4K关注 0票数 7

我想从页面中的HTML按钮调用paper.js函数,但我相信paper.js函数存在于它们自己的作用域中。paper.js文档提到了互操作性,这听起来是正确的,然后把我带到一个页面,上面写着“即将到来”:

http://paperjs.org/tutorials/getting-started/paperscript-interoperability/

谁知道如何从我的超文本标记语言页面调用在paper.js脚本中创建的函数?

EN

回答 2

Stack Overflow用户

发布于 2014-09-28 16:41:40

对那篇缺失的教程表示歉意。最后,我真的会花一些时间来写它。

我在去年的邮件列表中回答了这个问题:https://groups.google.com/d/msg/paperjs/C6F0XFlplqM/_67AMqCR_nAJ

作用域的PaperScript在全局作用域内运行,并且可以访问全局作用域的所有元素。在全局作用域(= PaperScopes )中运行的普通窗口将看不到这些窗口,也无法访问它们的变量。

在两者之间交换信息有一个简单的解决方案:只需声明一个用于来回交换内容的全局结构,例如

代码语言:javascript
复制
window.globals = {
    someValue: 10,
    someFunction: function() { alert(globals.someValue); }
};

在你的PaperScript中,你可以简单地通过‘

’来访问它,因为它在窗口范围内:

代码语言:javascript
复制
globals.someValue = 20;
globals.someFunction();

以同样的方式,您可以使用普通JavaScript中的这种结构。

票数 5
EN

Stack Overflow用户

发布于 2016-09-27 05:53:14

我只是想为遇到这种情况的任何人补充一些澄清。

对于PaperScript-to-JavaScript的互操作性,请执行以下操作...

在HTML文件中:

代码语言:javascript
复制
<button type="button" id="btn">Click Me!</button>

在JavaScript文件中:

代码语言:javascript
复制
$(document).ready(init);

function init(jQuery) {
  $("#btn").click(window.globals.paperClicked);
}

// PaperScript Interop
window.globals = {
  paperClicked: function() {}
}

在PaperScript文件中:

代码语言:javascript
复制
// JavaScript Interop
globals.paperClicked = internalClicked;

function internalClicked() {
  alert('clicked!');
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24439046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档