声明一个PApplet的静态实例?

时间:2015-01-12 02:14:16

标签: java processing

我希望能够在可序列化的类中引用PApplet,而不必将PApplet扩展或传递给构造函数。是否有可能做到这一点?这是我失败的尝试:

import java.io.*;

static PApplet p = new PApplet();

Foo f = new Foo();

void setup()
{
  f.render();
}

static class Foo implements Serializable 
{
  void render()
  {
    p.rect(10,10,10,10);
  }
}

2 个答案:

答案 0 :(得分:0)

根据Java语法,您需要将代码封装在类中。所有这些陈述

static PApplet p = new PApplet();

Foo f = new Foo();

void setup()
{
  f.render();
}

现在正在zombie的世界中,编译器会抛出编译错误。

答案 1 :(得分:0)

有点不清楚你在问什么:你的PApplet实例是否必须是静态的?你的Foo类必须是静态的吗?或者你刚才让它们变得静止,因为你认为你必须这样做?

为什么需要单独的PApplet实例?如果这是来自加工草图,那么您已经"在" PApplet的一个实例,您可以使用此关键字来引用。

这是您的代码,稍加修改后使用this关键字:

import java.io.*;

PApplet p = this;

Foo f = new Foo();

void setup()
{
  f.render();
}

class Foo implements Serializable 
{
  void render()
  {
    p.rect(10,10,10,10);
  }
}

但是,这个关键字(和p变量)并不是必需的。这段代码做了同样的事情:

import java.io.*;

Foo f = new Foo();

void setup()
{
  f.render();
}

class Foo implements Serializable 
{
  void render()
  {
    rect(10,10,10,10);
  }
}

就像我说的那样,有点不清楚你在问什么,所以也许你需要p变量。答案是只使用this关键字并删除静态关键字。