如何创建一个向语言添加新功能的处理库?

问题描述 投票:0回答:3

我想创建一个 Processing 库,为 Processing 添加一个函数。一个命令。我该怎么做?

所以我希望能够在 Processing this 上写下:

void setup() {
    drawMyCustomShape()
}

drawMyCustomShape
将在我的自定义库实现中的方式。

谢谢!

注:本题不是processing中创建新库。是关于创建一个导出一个新命令的库(这样你就可以在不关心容器类实例的情况下使用)。

function processing add
3个回答
1
投票

首先,你确定你真的需要创建一个完整的库吗?您可以将该类添加到草图中,而无需将其部署为库。如果您担心混乱,只需将其放在自己的标签中即可。

如果你真的需要创建一个库,那么你需要阅读三个教程:

但基本上,您需要创建一个使用 Processing 作为库的 Java 项目(在像 eclipse 这样的 IDE 中,或者使用基本的文本编辑器和命令行)。那就是你放置

MyLibrary
类的地方。然后将其导出为
.jar
文件,然后将该
.jar
文件导入到 Processing 中。然后你就可以像使用任何其他处理库一样使用你的类。

您建议的设置还有一些其他问题(您将如何从

sketch
函数访问
static
变量?),但我建议您在掌握基础知识后将它们视为单独的问题。


0
投票

听起来您实际上是在寻找创建自己的 Processing 库扩展,实际上是在更改核心 jar 文件。

您可以通过在 Github 上分叉其主要分支来扩展实际的 Processing 库。通过将您的函数

drawMyCustomShape
写入分叉版本的实际核心中,然后您可以从您的代码副本构建处理开发环境。使用 PDE 的特定副本,您可以执行您所描述的操作。

编译此构建后,您实际上可以将此 PDE 副本分发给您的大学生。他们将能够使用您的功能,就好像什么都没有改变一样。 (我猜这是针对大学级别的入门级课程,所以这就是为什么你必须对学生隐藏实现?)

这里有一些链接可以帮助您入门:


0
投票

所以,最后我找到了最适合我的情况的答案。

解决方案是实现一个扩展内置 Java 模式的新处理模式。要将静态成员包含到主处理程序中,您需要向处理添加到代码中的成员添加一个新的静态导入。

您可以通过分叉 @joelmoniz 从 @martinleopold 创建的 3.0 模式模板来做到这一点: https://github.com/joelmoniz/TemplateMode/tree/3.0-compatibility

这里有一个很好的教程: http://pvcresin.hatenablog.com/entry/2016/03/17/210135

为什么是最合适的解决方案? : 我认为这是在处理代码中实现新静态方法并确保轻松分发的最佳方式!您只需在

sketchbook/modes
文件夹中设置模式文件夹。如果我要分叉处理,那么为所有操作系统准备发行版并与主项目保持更新将是一件大事。

我的特殊解决方案

为了将我的静态导入添加到 Processing 中,我实现了一个自定义模式,在该模式中我覆盖了

PdePreprocessor
类,该类将处理代码与所有 Java 处理代码包装在一起。因此,我们的想法是向
PdePreprocessor
在生成的 Java 源代码上生成的导入添加更多导入。

在我的自定义

PdePreprocessor
中,我覆盖了
getCoreImports
方法来添加我的自定义方法。我在这里这样做是因为我认为新导入是我自定义模式的核心部分。您也可以通过重写
writeImports
方法来实现。

为了使用我的

PdePreprocessor
实现,我不得不覆盖以下类:

  • Commander
  • JavaBuild
  • JavaEditor
  • JavaMode
  • JavaEditor

我必须实施一个新的

JavaBuild
,它用我的自定义
Sketch
预处理
PdePreprocessor
。并且还在 Processing Java Mode 实例化构建类的所有地方使用我的自定义
JavaBuild
。如果有更好的方法来做我所做的,请与我们分享。

这是我的解决方案的 github:http://github.com/arypbatista/processing-inpr/

© www.soinside.com 2019 - 2024. All rights reserved.