import processing.video.*;
Capture cam;
void setup() {
size(560, 360);
cam = new Capture(this, 560, 360, 30);
cam.start();
}
void draw() {
if (cam.available()) {
cam.read();
loadPixels();
cam.loadPixels();
for (int x = 0; x < cam.width; x++) {
for (int y = 0; y < cam.height; y++) {
// Calculate the 1D location from a 2D grid
int loc = x + y * cam.width;
// Get the red, green, blue values from a pixel
float r = red (cam.pixels[loc]);
float g = green(cam.pixels[loc]);
float b = blue (cam.pixels[loc]);
// Calculate an amount to change brightness based on proximity to the mouse
float d = dist(x, y, mouseX, mouseY);
float adjustbrightness = map(d, 0, 50
, 4, 0);
r *= adjustbrightness;
g *= adjustbrightness;
b *= adjustbrightness;
// Constrain RGB to make sure they are within 0-255 color range
r = constrain(r, 0, 255);
g = constrain(g, 0, 255);
b = constrain(b, 0, 255);
// Make a new color and set pixel in the window
color c = color(r, g, b);
pixels[loc] = c;
}
}
updatePixels();
}
}
1 Like
Well, you can use the function keyPressed, and declare a global variable who stores the x and y position of the object, like the follows:
int posX = 0;
int posY = 0;
void setup(){
}
void draw(){
yourObjectPos(posX, posY);
}
void keyPressed(){
if(keyCode == LEFT){
posX -= 5;
}
if(keyCode == RIGHT){
posX += 5;
}
}
and the same for UP and DOWN, hope it helps!
2 Likes
and @bryan a method i use to have continuous press is this:
boolean[] keys = new boolean[400];//400 is an exaggerated guess
void keyPressed(){
keys[keyCode];
}
void keyReleased(){
keys[keyCode] = false;
}
if(keys[LEFT]){
posX -= 5;
}
if(keys[RIGHT]){
posX += 5;
}
2 Likes
yeah, this looks great!, continuous is way better
1 Like