Februar 29, 2012
Ein Imageslider der Bewegung gesteuert wird.import processing.video.*; // Variable for capture device Capture video; // Saved background PImage backgroundImage, motionImage; boolean haveBackgroundImage = false; boolean showMotion = false; Button buttonLeft, buttonRight; Slider slider; // How different must a pixel be to be a foreground pixel float threshold = 100; void setup() { size(640, 480); video = new Capture(this, 640, 480, 30); backgroundImage = createImage(video.width, video.height, RGB); motionImage = createImage(video.width, video.height, RGB); buttonLeft = new Button(40, height/2-40, 80, false); buttonRight = new Button(width-120, height/2-40, 80, true); slider = new Slider(width/2-150,height/2-150,300,300); int sliderItems = 7; for(int i = 1; i <= sliderItems;i++) { slider.addSlide(i+".jpg"); } slider.setDefault(); smooth(); fill(255); } void draw() { background(0); // Capture video if (video.available()) { video.read(); } video.loadPixels(); backgroundImage.loadPixels(); motionImage.loadPixels(); // Begin loop to walk through every pixel for (int x = 0; x 0) { fill(255, 200); float s = map(constrain(timer,0,timerTarget), 0, timerTarget,0,w); ellipse(x+w/2-s/2, y+w/2-s/2, s, s); } fill(0, 255); if (t) { triangle(x+w*1/3, y+w/4, x+w*1/3, y+w/4*3, x+w*3/4, y+w/2); } else { triangle(x+w*2/3, y+w/4, x+w*2/3, y+w/4*3, x+w*1/4, y+w/2); } } } class Slide { PImage img; int w,h,x,y; int targetX; boolean isAnimated = false; Slide(String fileName, int _w,int _h) { img = loadImage(fileName); float wRatio = 1; float hRatio = 1; if (img.width > _w || img.height > _h) { wRatio = _w / float(img.width); hRatio = _h / float(img.height); } float resizeRatio = min(wRatio, hRatio); h = int(img.height * resizeRatio); w= int(img.width * resizeRatio); x = 0; y = height/2-h/2; } void setTarget(int _x) { targetX = _x; isAnimated = true; } void setPos(int _x) { x = _x; } void setPosnTarget(int _x1, int _x2) { x = _x1; targetX = _x2; isAnimated = true; } void display() { if(isAnimated) { if(abs(targetX-x) > 10) { x += (targetX-x)/5; } else { isAnimated = false; } } image(img, x, y, w, h); } } class Slider { int x,y,w,h; ArrayList slides; int slideIndex; int prevSliderIndex; Slider(int _x, int _y, int _w, int _h) { x = _x; y = _y; w = _w; h = _h; slides = new ArrayList(); slideIndex = 0; } void addSlide(String filename) { slides.add(new Slide(filename,w,h)); } void setDefault() { slideIndex = 0; Slide slide = (Slide) slides.get(slideIndex); slide.setPos(int(x)+w/2-slide.w/2); } void nextSlide() { prevSliderIndex = slideIndex; slideIndex++; if(slideIndex == slides.size()) { slideIndex = 0; } Slide slide = (Slide) slides.get(slideIndex); Slide slidePrev = (Slide) slides.get(prevSliderIndex); slide.setPosnTarget(width+slide.w+50,int(x)+w/2-slide.w/2); slidePrev.setTarget(0-slidePrev.w-50); } void prevSlide() { prevSliderIndex = slideIndex; slideIndex--; if(slideIndex < 0) { slideIndex = slides.size() - 1; } Slide slide = (Slide) slides.get(slideIndex); Slide slidePrev = (Slide) slides.get(prevSliderIndex); slidePrev.setTarget(width+slide.w+50); slide.setPosnTarget(0-slidePrev.w-50,int(x)+w/2-slide.w/2); } void display() { Slide slide = (Slide) slides.get(slideIndex); Slide slidePrev = (Slide) slides.get(prevSliderIndex); slide.display(); slidePrev.display(); } }