class Confetti extends Particle { // We could add variables for only Confetti here if we so Confetti(PVector l) { super(l); } // Inherits update() from parent // Override the display method void display() { rectMode(CENTER); fill(c,lifespan); stroke(0,lifespan); strokeWeight(2); pushMatrix(); translate(position.x,position.y); float theta = map(position.x,0,width,0,TWO_PI*2); rotate(theta); rect(0,0,12,12); popMatrix(); }}4、ParticleSystem.pde 粒子体系类(多态)
class ParticleSystem { ArrayList<article> particles; PVector origin; ParticleSystem(PVector position) { origin = position.get(); particles = new ArrayList<article>(); } void addParticle() { float r = random(1); if (r < 0.5) { particles.add(new Particle(origin)); } else { particles.add(new Confetti(origin)); } } void run() { for (int i = particles.size()-1; i >= 0; i--) { Particle p = particles.get(i); p.run(); if (p.isDead()) { particles.remove(i); } } }}5、运行结果