I’ve created a “Star” class that allows me to create a star shape given inner and outer radii and number of points. I’ve written a load of code in the constructor that works out the vertices of the star, and saves each to an array -so far so good, all working fine.
Then (still within the constructor) I wanted to write those vertices into a PShape variable that’s part of the object…so when I call my custom display() method of the Star class, I can just use shape() (instead of looping through the vertex array to draw the outline each time).
For some reason though, I can’t create a PShape object in my class’ constructor. I’m getting java.lang.reflect.invocationTargetException (and I’ve also had a “cannot initialise VM” error).
I’ve reduced, commented out and simplified the code, and the error is definitely being caused by the PShape creation.
Here’s a simplified/slimmed down version of the class (removed the code that works out angles, and substituted some hardcoded calls to vertex in its place) - the structure and scope is exactly the same as my working code:
----------------------------------
Polygon poly = new Polygon();
void setup(){
size(800, 800);
}
void draw(){
background(255);
poly.display();
}
//class stuff here
class Polygon{
PShape s;
Polygon(){
s = createShape();
s.beginShape();
s.fill(175);
s.vertex(77,57);
s.vertex(99, -68);
s.vertex(23,-51);
s.endShape(CLOSE);
}
void display(){
shape(s, mouseX, mouseY);
}
}
Any idea? Is this the wrong thing to do in a class constructor?