我正在使用Processing的Android模式来创建草图。现在,我只想使用自定义Dot类显示椭圆。 Eclipse没有检测到任何错误。我将发布整个代码以供参考。主要活动的代码如下:
package com.example.yo;
import processing.core.PApplet;
public class MainActivity extends PApplet {
public Dot dot = new Dot(50,50,155,200,20);
public void setup() {
background(0,0,0);
stroke(255,0,0);
strokeWeight(10);
}
public void draw() {
dot.display();
}
}
Dot类如下:
package com.example.yo;
import processing.core.PApplet;
public class Dot extends PApplet{
//declaration of dot's fields
public int x;
public int y;
public int redd;
public int greenn;
public int bluee;
public Boolean through = false;
//constructor
Dot(int xPos, int yPos, int redness, int greenness, int blueness){
x = xPos;
y = yPos;
redd = redness;
greenn = greenness;
bluee = blueness;
}
public void display(){
noStroke();
fill(redd,greenn,bluee);
if (through){
ellipse(x, y,40,40);
}else{
ellipse(x, y, 30, 30);
}
}
}
当我尝试运行应用程序时,应用程序立即崩溃,并且消息框“不幸的是,Yo已经停止了#39;我必须承认,我不能更准确地指出你的问题,因为我不知道代码中有什么问题。 Dot类的结构与Processing帮助页面上给出的示例等效:https://www.processing.org/reference/class.html 这两个类都在同一个包中。
我试图在设置函数中实例化点,在它之外,甚至在绘制循环中连续实例化,但没有成功。
如果您需要更多信息,请与我们联系。提前谢谢。
答案 0 :(得分:3)
问题解决了。供将来参考:
dot类在任何情况下都不应该扩展PApplet,这只应该是主要活动的情况。但是,当dot类没有扩展PApplet时,Eclipse会给出错误,这并不奇怪,因为它不理解任何处理命令。要解决这个问题,应该在开头声明PApplet类,然后在构造函数中将PApplet作为参数传递并分配给我们在开头声明的变量。现在,应将所有处理命令视为父类的方法。这是dot的以下代码(我在MainActivity类中添加的唯一更改是使用 this 作为附加参数调用Dot):
package com.example.yo;
import processing.core.*;
class Dot{
//declaration of dot's fields
public float xpos;
public float ypos;
public int redd;
public int greenn;
public int bluee;
public Boolean through = false;
PApplet parent;
//constructor
Dot(PApplet p, float xPosition, float yPosition, int redness, int greenness, int blueness){
parent = p;
xpos = xPosition;
ypos = yPosition;
redd = redness;
greenn = greenness;
bluee = blueness;
}
public void display(){
parent.noStroke();
parent.fill(redd,greenn,bluee);
if (through){
parent.ellipse(xpos, ypos, 4.0f, 4.0f);
}else{
parent.ellipse(xpos, ypos, 30.0f, 30.0f);
}
}
}
此问题的解决方案最好在此处描述:
https://processing.org/tutorials/eclipse/
在带有多个类的Eclipse中的处理部分。