当前位置: 首页 > 知识库问答 >
问题:

如何从加工草图外部调用加工方法?

谭高峯
2023-03-14

我想要一个方法invokeProcessingMethod(字符串名、对象…args),它从处理中调用一个方法,并返回可能产生的任何值。

我已经有了一个方法invokeMethod(String name,Object…args),它从当前实例上的超类中调用一个方法,所以我认为这一方法的一个实现就是用我已有的方法创建一个草图

 class ProcessingRELP extends PApplet{

       public static void main(String[] args) {
            PApplet.main("ProcessingRELP");
       }

       void settings(){

       }

       void setup() {

       }

       void draw() {

       }

       invokeProcessingMethod(String name, Object... args) {
             invokeMethod(name, args);
       }
 }

然后做一些像

 class Test {
       public static void main(String[] args) {
            ProcessingRELP sketch = new ProcessingRELP();
            Object data = sketch.invokeProcessingMethod("textWidth", "hello");
       }
 }

但是我得到了以下异常,因为我没有调用setupdraw

异常线程"main"java.lang.NullPointerExcema
在processing.core.PApplet.textWidth(PApplet.java:12960)
在ProcessingRELP. invkeProcessingmethod(ProcessingRELP. java: 27)
在Test.main(Test.java:25)

在草图之外是否有调用处理方法的方法,或者是否有一种创造性的方法,仍然在草图中调用,但能够从草图之外检索数据?

共有2个答案

狄心水
2023-03-14

我不知道如何初始化处理草图,以便为您提供参考。需要使用PApplet.main()函数:

String[] appletArgs = new String[] { "MySketch" };
PApplet.main("ProcessingRELP");

无耻的自我推销:这里有一个关于将处理作为Java库使用的教程。

除此之外,我对你的invokeMethod()方法非常怀疑。为什么不能直接调用函数呢?

像这样的东西:

float stringWidth = sketch.textWidth("hello");

不管是哪种方式,我认为您都需要重构代码以使用PApplet。main()。

您可以做一些事情,比如将您的逻辑移动到草图类的set()函数中。但是不管怎样,你的处理草图需要成为切入点。

曾宏毅
2023-03-14

您需要首先运行草图,因为您试图调用依赖于草图运行时的方法(textWidth()在计算中使用活动草图的textFont和textSize),而不是静态方法。简单地实例化一个ProcessingRELP对象不会运行它;这可以通过以下方法实现:

ProcessingRELP sketch = new ProcessingRELP();
PApplet.runSketch(new String[]{"--location=0,0", ""}, sketch);

现在,您可以调用您的方法,因为草图正在运行。

 类似资料:
  • 问题内容: 我有一个具有称为的私有方法的类。我想从外面打电话。我认为应该可以反思,但是我得到了。有任何想法吗??? 问题答案: 利用使用其之前的Method对象的方法。

  • 我想通过在处理中使用一个草图来创建两个窗口。 我想做的是,如果我在一个窗口中单击一个按钮,那么一些图像就会出现在另一个窗口中。 我搜索了谷歌,找到了一些例子。实际上,我在这个“堆栈溢出网络”中发现了相同的问题。以下是链接。 在处理中为单个草图创建多个窗口http://forum.processing.org/one/topic/multiple-windows-2-4-2011.html 这是第二

  • 问题内容: 我有一个非常简单的Java类,它使用输入验证以及明显的void set()和String get()方法来有效地装饰Map。 我希望能够有效地调用这些方法并从JVM外部处理返回值和异常,但仍在同一台计算机上 更新:我想到的调用者不是另一个JVM; 谢谢@戴夫雷 我的实施注意事项很典型 性能 易于实施和维护(简单吗?) 可靠性 灵活性(例如,我可以从远程计算机上拨打电话等) 有“正确的方

  • 问题内容: 在我遵循的方法: 我可以从HTML调用它,例如: 如您所见,如果我得到回报 这是实用程序,因此我想将其定义为 没有例外 当我尝试这样称呼它时: 没发生什么事。 **我已添加到控制器。 如何从HTML调用工厂方法? (*如果不清楚,欢迎您更改/编辑我的问题) 谢谢, 问题答案: 好吧,您实际上不应该这样做…但是您 可以 做的是将服务对象放在$ scope的一个属性中,然后从那里调用它。

  • 本文向大家介绍php绘图之加载外部图片的方法,包括了php绘图之加载外部图片的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php绘图之加载外部图片的方法。分享给大家供大家参考。具体实现方法如下: 在实际应用中,就是常见的水印功能。 希望本文所述对大家的php程序设计有所帮助。

  • 问题内容: 我想从React元素的实例中调用React组件公开的方法。 例如,在此jsfiddle中。我想从参考中调用该方法。 有没有一种方法可以实现而无需编写其他包装程序? 编辑 (从JSFiddle复制的代码) 问题答案: 有两种访问内部函数的方法。一个实例级别,如您所愿,另一个静态级别。 实例 您需要在从返回时调用函数。见下文。 静态的 看一下ReactJS Statics。但是请注意,静态