Paperscope和paperjs(Paperscope and paperjs)

2019-10-21 15:41发布

所以,我想有两个画布元素,每个都有自己的paperscript,并在每个控制中同时某些功能的外部按钮创建一个项目。

Paperscript下的文件下,它说:

请注意:当在一个页面中包含多个PaperScript,每个脚本将运行>在自己的范围内,不会看到声明的对象和函数>其它。 对于PaperScript与其他PaperScript或> JavaScript代码进行通信,请参阅有关PaperScript互操作性的教程。

...因为该教程如下这是不幸的:

即将很快!

我已经得到了在这个过程中卡住非常快。 我试图把功能全球范围内,从他们的画布外的呼唤他们,看到他们错了画布上打印。 我试着通过模块导出函数,它似乎运行功能(?!?!)。 而最坏的情况是“paper.projects”的对象是一个(!)在这项目中,第一画布的数组。

所以我难倒。

有人知道怎么做吗?

编辑:所以显然有这个答案 ,但我不知道怎么说让我能够调用函数在全球范围内脚本PaperScript范围。

这似乎只是一个脚本调用全局函数在PaperScope,如果我试图让外界按钮做的事情不为我工作。

显然,我失去了一些东西。

第二个编辑:我曾与各种全球性的功能,无论是在window.global或只是自己与没有变种声明坐...但似乎发生的是,当我打电话,我已经定义了一个函数,也就是说,作为出场左右:

globals.makecircle = function () {
    var o = new Path.Circle({
        radius: 50,
        center: new Point (200,200)
    })
}

在主要适用范围,它只是一旦在错误的窗口中正确的窗口中运行。 也有是一个令人难以置信的延迟运行之前,我想不通。

第三编辑:为清楚。

我已经firstcanvas.js连接到canvas1在我的HTML,我有secondcanvas.js连接到canvas2 。 两者都为paperscript类型引用,如:

<script type="text/paperscript" src="scripts/firstcanvas.js" canvas="canvas1"></script>
        <script type="text/paperscript" src="scripts/secondcanvas.js" canvas="canvas2"></script>

我创建window.globals对象作为尔格建议。 我把它从一个按钮main.js,如:

window.globals = {}
`$('document').ready($('#dfs').on('click', window.globals.makecircle))`

我这个函数添加到全局firstcanvas.js如上。

如果说我最近点击canvas2,点击与按钮id='DFS'将导致函数运行,超延迟,在canvas2。

paper.projects没有列出这两个项目,所以我不能使用activate()函数。

Answer 1:

好的! 解决了!!!

下面是如何引用/从全球范围内启动PaperScript创建范围。 虽然没有用户可访问范围的阵列(据我所知), PaperScope.get(id)将进行检索。 出于某种原因,我觉得PaperScope.get(0)已填充,和我的两个帆布/ PaperScript元素实际上指的是用示波器IDS 1和2。

因此:

pscope1 = PaperScope.get(1)
pscope2 = PaperScope.get(2)

然后,在我想要做的事对我的第一画布的任何功能:

pscope1.activate()

// cool paper.js graphics stuff

pscope1.view.update()

最后一行是因为paper.js不会自动更新,用户不与交互的视图。

由于尔格Lehni的提示使用.activate()

PS请确保您的paperscript对象使用之前创建PaperScope.get 。 我用好“醇JQuery的$('document').ready()这个...

PPS从尔格Lehni自己另一个小命中:里面一个PaperScript, this将指向当前范围。 你可以使用,并将其存储在全局对象。



文章来源: Paperscope and paperjs