Java 在Processing中编写小型库
我想做以下事情,但不知道如何做,也许有人能帮我: 我想在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
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如果在设置函数中声明一个变量,则该变量仅在设置函数的作用域内。但是,如果在草图顶部声明变量并在设置函数中对其进行初始化,则可以在绘图函数中访问该变量。这是处理过程中非常标准的事情。无耻的自我提升:有关更详细的解释和示例代码,请参阅的范围部分。