Java 在Processing中编写小型库

Java 在Processing中编写小型库,java,object,processing,Java,Object,Processing,我想做以下事情,但不知道如何做,也许有人能帮我: 我想在Processing中编写一个小的库,使面向对象编程概念对学生可用。我给你举个简单的例子: 在处理过程中,我可以通过键入在草图中的某个位置创建点 point(30, 30); point(20, 20); 等等。我想要实现的是将这些函数包装到我自己的类中,例如 class Point { float xPos; float yPos; Point(float x, float y) { xPos = x; y

我想做以下事情,但不知道如何做,也许有人能帮我:

我想在Processing中编写一个小的库,使面向对象编程概念对学生可用。我给你举个简单的例子:

在处理过程中,我可以通过键入在草图中的某个位置创建点

point(30, 30);
point(20, 20);
等等。我想要实现的是将这些函数包装到我自己的类中,例如

class Point {
  float xPos;
  float yPos;

  Point(float x, float y) {
    xPos = x;
    yPos = y;
    point(x, y);
  }
}

Point p = new Point(10,10);
这听起来可能很愚蠢,但这样我可以更好地使用面向对象的方法

现在我的问题是:假设我构建了十几个这样的类,并希望在图书馆中使用它们,这样学生就可以简单地使用它们

import myLibrary:
Point P = new Point(10, 10);
我该怎么做?我知道官方网站上有一个教程介绍了在Eclipse中创建一个简单的库,但是我不能在Java中使用任何处理函数,对吗?我想我的point类的构造函数不会因为这个而工作

谢谢你的帮助


rikojir

您可以实现它,只需将所有类装入一个jar文件箱,但在创建jar文件之前,不要忘记将所有类添加到单个包中,或者添加到一个jar文件中,在创建jar文件后,您可以将其添加到类路径中并使用它。
如果您使用的是ecllipse,那么请查看如何在其中使用jar文件。

如果您希望将类包装为一个处理Java库,则应遵循存储库中的说明

与您通常编译Java库的方式相比,这有点冗长,但如果您计划将它与Processing的贡献管理器一起使用,这是一种方法

如果您只想进行快速测试,请保持脱机/手动安装,按照典型的java说明编译.jar。Eclipse使这变得更容易。 请记住,您仍然需要遵循处理库设置:

如果需要在库名称中使用任何符号,请使用下划线,不要使用破折号、点或其他符号 将.jar文件放在正确的文件夹中。库名称与.jar文件名称匹配:~/Documents/Processing/libraries/YourAwesomeLibrary/library/YourAwesomeLibrary.jar 我知道官方网站上有一个教程介绍了在Eclipse中创建一个简单的库,但是我不能在Java中使用任何处理函数,对吗

当然可以。阅读乔治的答案,了解如何做到这一点的指南。基本上,您可以将Processing用作Java库,这样您就可以在Java中访问Processing的类和函数。您可以用Java编写库,将其导出为.jar文件,然后使用George的答案或将.jar文件直接拖到处理编辑器中,将其添加到处理草图中

我想我的point类的构造函数不会因为这个而工作

您必须将处理草图的实例传递给点构造函数,并使用该实例访问处理的函数。大概是这样的:

class Point {
  float xPos;
  float yPos;
  PApplet sketch;

  Point(float x, float y, PApplet sketch) {
    xPos = x;
    yPos = y;
    this.sketch = sketch;
  }

  void drawMe(){
    sketch.point(xPos, yPos);
  }
}
然后在草图中,使用this关键字传递对库代码的自引用:

Point p = new Point(10, 10, this);
p.drawMe();

你也可以考虑简单地为你的Point类使用一个单独的标签,而不是整个外部的库。

什么是Point x,y;在你的构造函数中?为了访问x和y,程序中应该有Setter和Getter方法。好的,但是我如何将我的类添加到核心功能中呢?我可以编写它们,但如果没有错的话,我需要core.jar文件来处理我的库。这两个怎么包装?我想稍后在处理IDE中使用我的库,如果可能的话,我现在就可以使用了。我仍然有一些悬而未决的问题:当然,我现在可以开始用自己的方法、getter和setter等编写很多类。我想知道的是,为什么我不能在setup函数中声明我的变量,例如一个新的点实例,然后在draw函数中使用它,这个函数在循环中被调用。有人能给我解释一下吗,或者有没有可能在绘图函数中使用setup函数中声明的变量?否则,每次我都必须自己实现一个动画或游戏循环。@rikojir如果在设置函数中声明一个变量,则该变量仅在设置函数的作用域内。但是,如果在草图顶部声明变量并在设置函数中对其进行初始化,则可以在绘图函数中访问该变量。这是处理过程中非常标准的事情。无耻的自我提升:有关更详细的解释和示例代码,请参阅的范围部分。