tekst in text bestanden en scrolling tekst.
Mover textScroller;
Mover m1; Mover m2; Mover m3; Mover m4; Mover m5; Mover m6; Mover m7; Mover m8; Mover m9;
Mover m10; Mover m11; Mover m12; Mover m13; Mover m14;
Mover lijn1; Mover lijn2; Mover lijn3; Mover lijn4; Mover lijn5;
void setup() {
// Door P2D of P3D toe te voegen beweegt de tekst minder schokkerig !
// Bij fullScreen bevindt de text ingesteld op height zich net onder de onderrand van het scherm
// Bij fonts met verschillende grootte kloppen de waarde van sw niet meer
// kleine verschillen in sw (stringwidth), bij dezelfde lengte van de string,
//veroorzaken een verschuiving van de tekstlijnen
fullScreen(P3D);
m1 = new Mover(0, height-280, 1.5, color(255, 0, 0), createFont("Asea", 30, true));
m2 = new Mover(1, height-260, 1.4, color(255), createFont("Asea", 30, true));
m3 = new Mover(2, height-240, 1.3, color(255), createFont("Asea", 30, true));
m4 = new Mover(3, height-220, 1.2, color(255), createFont("Asea", 30, true));
m5 = new Mover(4, height-200, 1.1, color(0, 255, 0), createFont("Asea", 30, true));
m6 = new Mover(5, height-180, 1, color(255), createFont("Asea", 30, true));
m7 = new Mover(6, height-160, 0.9, color(255), createFont("Asea", 30, true));
m8 = new Mover(7, height-140, 0.8, color(255), createFont("Asea", 30, true));
m9 = new Mover(8, height-120, 0.7, color(255), createFont("Asea", 30, true));
m10 = new Mover(9, height-100, 0.6, color(255), createFont("Asea", 30, true));
m11 = new Mover(10, height-80, 0.5, color(255), createFont("Asea", 30, true));
m12 = new Mover(11, height-60, 0.4, color(255), createFont("Asea", 30, true));
lijn1 = new Mover(12, 50, 1, color(255, 0, 0), createFont("Asea", 30, true));
lijn2 = new Mover(13, 50, 0.8, color(255), createFont("Asea", 30, true));
lijn3 = new Mover(14, 50, 0.6, color(255), createFont("Asea", 30, true));
lijn4 = new Mover(15, 50, 0.4, color(255), createFont("Asea", 30, true));
textScroller = new Mover(createFont("Asea", 30, true));
}
void draw() {
background(0);
pushMatrix();
textScroller.displayScrollingText();
popMatrix();
pushMatrix();
m1.rechthoek();
m1.display();
popMatrix();
pushMatrix();
m2.rechthoek();
m2.display();
popMatrix();
pushMatrix();
m3.rechthoek();
m3.display();
popMatrix();
pushMatrix();
m4.rechthoek();
m4.display();
popMatrix();
pushMatrix();
m5.rechthoek();
m5.display();
popMatrix();
pushMatrix();
m6.rechthoek();
m6.display();
popMatrix();
pushMatrix();
m7.rechthoek();
m7.display();
popMatrix();
pushMatrix();
m8.rechthoek();
m8.display();
popMatrix();
pushMatrix();
m9.rechthoek();
m9.display();
popMatrix();
pushMatrix();
m10.rechthoek();
m10.display();
popMatrix();
pushMatrix();
m11.rechthoek();
m11.display();
popMatrix();
pushMatrix();
m12.rechthoek();
m12.display();
popMatrix();
pushMatrix();
lijn1.lijn();
lijn1.display();
popMatrix();
pushMatrix();
lijn2.lijn();
lijn2.display();
popMatrix();
pushMatrix();
lijn3.lijn();
lijn3.display();
popMatrix();
pushMatrix();
lijn4.lijn();
lijn4.display();
popMatrix();
}
class Mover {
PFont f;
String txt;
int index; PFont fs;
String[] lines; String[] lines2;
float sw;
float x; float y;
float snelh; color c;
float teller; float teller2; float r;
Mover(int index_, float y_, float snelh_, color c_, PFont f_) {
index = index_;
y = y_;
snelh = snelh_;
c = c_;
f = f_;
lines = loadStrings("tuinman.txt");
}
Mover(PFont fs_) {
fs = fs_;
lines2 = loadStrings("tuinman2.txt");
txt = join(lines2,'\n');
}
void rechthoek() {
sw = textWidth(lines[index]);
teller = teller + snelh;
//1) X richting
if ((teller >=0 ) && (teller < width/3)) translate(teller, 0);
//2) y richting
if ((teller >= height/1.6875) && (teller < height/0.7941)) translate(width/3, -(teller-height/1.6875));
//3) x richting
if ((teller >= width/1.41176) && (teller < width/0.96+sw)) translate(teller-width/2.666, -height/1.5);
//4) y richting
if ((teller >= height/0.54+sw) && (teller < height/0.397+sw)) translate(width/1.5+sw, -height/0.397-sw+teller);
//5) Actie: beweging in x richting naar eindpunt x = 960.
// Beginpunt x is de x waarde in vorige translate(x,y); = 640+sw
// eindpunt y is beginpunt y in de eerste stap y = 0,
// Instellingen teller:
// 1) Beginstand teller = vorige eindstand teller = 1360+sw
// Aantal tellen = 320-sw
// 2) Eindstand teller = beginstand teller + aantal tellen = 1360+sw+320-sw = 1680
// Instellingen van translate(x,y)
// x = teller-(eindstand teller - eindpunt x) = teller - (1680-960)
// x = teller- 720
// y = eindpunt y eerste stap = 0
if ((teller > width/0.70588+sw) && (teller < width/0.5714+sw)) translate(teller-width/1.3333, 0);
//sw wordt bij de eindstand teller opgeteld zodat de text uit het beeld kan lopen
if (teller >= width/0.5714+sw) teller = 0;
}
void lijn() {
sw = textWidth(lines[index]);
teller2 = teller2 + snelh;
// X richting
if ((teller2 >=0 ) && (teller2 < width+sw)) translate(teller2, 0);
if (teller2 >= width+sw) teller2 = 0;
}
void display() {
textAlign(RIGHT);
textFont(f);
fill(c);
text(lines[index], x, y);
}
void displayScrollingText() {
translate(width/2, height);
rotateX(PI/4);
fill(200,100,80);
textFont(fs);
textAlign(CENTER);
text(txt, 0, y);
y--;
if (y < -2*height) y = 0;
}
}