Utilisation de Processing (Image en boucle)

Fermé
SimonRan Messages postés 8 Date d'inscription mardi 9 avril 2013 Statut Membre Dernière intervention 25 janvier 2017 - 15 févr. 2016 à 22:29
SimonRan Messages postés 8 Date d'inscription mardi 9 avril 2013 Statut Membre Dernière intervention 25 janvier 2017 - 4 mars 2016 à 21:06
Bonjours je m'appelle Simon, je suis entrain de réaliser un programme sur processing. J'ai crée un rectangle nommé "Play", ce qui veut dire que lorsque je clique sur le rectangle il faut qu'il y'a "3, 2 ,1, PARTEZ" qui apparaît sur l'écran. Mais justement je ne sais pas comment mettre des images en boucles. Vous n'auriez pas une idée pour programmé ?
A voir également:

2 réponses

faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20
Modifié par faseldi le 16/02/2016 à 03:41
Bonjour, Bonsoir ! Je t'ai fait un petit code que je l’espère répond à ta demande :)

Notes : si tu n'utilises pas un IDE pour compiler, il faudra changer certains paramètres.
Les images sont directement lues dans l'archive, par URL (la méthode statique en bas).
J'ai utilisé NetBeans comme IDE.
J'ai utilisé un thread qui met à jour une icone dans une classe qui étend un JPanel.
J'ai ajouté une instance de cette classe dans une JFrame (fenetre graphique de 500,500)
J'ai fais une méthode pour lancer le changement d'image dans ImagesARebours, et le tour est joué.
Si tu n'y arrive toujours pas, tu peux demander
Les images sont dans un package images.
Je sais pas si on peut donner des fichiers à télécharger sur CCM alors j'évite, mais si tu en as besoin je peux te le poster sur mon site.



package ccm;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class ImagesARebours extends JLabel{
private ArrayList<Image> images;
Thread t;
public ImagesARebours(){
super();
images = new ArrayList<>();
ajouterImage("/images/3.png");
ajouterImage("/images/2.png");
ajouterImage("/images/1.png");
}
private void ajouterImage(String url){
BufferedImage imagetmp = getRepresentation(getClass().getResource(url));
Image imageN = imagetmp.getScaledInstance(500, 500, BufferedImage.SCALE_SMOOTH);
images.add(imageN);
}
public void lancerRebours(){
t = new Thread(new Runnable() {

@Override
public void run() {
for(int i = 0; i < images.size(); i++){
setIcon(new ImageIcon(images.get(i)));
try{
Thread.sleep(1000); // on att 1000 ms pour changer d'image
}catch(InterruptedException e){
break;
}
}
}
});
t.start();
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(500,500);
ImagesARebours imgR = new ImagesARebours();
f.add(imgR);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
imgR.lancerRebours();
}
public static BufferedImage getRepresentation(URL url){
try{
return ImageIO.read(new File(url.getPath()));
}catch(IOException e){
System.err.println("Impossible de charger l'image suivante : "+url.getFile());
}
return null;
}
}
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
16 févr. 2016 à 20:20
Remarque : ce code est en pur Java, il faudra l'adapter pour Processing.
0
SimonRan Messages postés 8 Date d'inscription mardi 9 avril 2013 Statut Membre Dernière intervention 25 janvier 2017
16 févr. 2016 à 21:21
Merci beaucoup mais mon prof veut que je le fasse sans Java, c'est très dommage :/. Regarde sa c'est le programme que j'ai fait, tu peux me dire quel programmation je dois rajouter stp. Je veux juste cliquer sur le bouton démarrer qui est en bas à droite, pour qu'il y'a "3, 2, 1, PARTEZ" qui apparaît au milieux.

size (1600, 800);
background(100);
textSize(35);
text("Course de voiture", 500, 30);
fill(0, 102, 153);
noStroke();
fill(0, 102, 153);
rect(1010, 590, 200, 100);
textSize(15);
fill(0);
text("Demarrer", 1065,645);
PImage a ;
a = loadImage("chiffre-3.jpg");
image(a,490,300,200,200);
delay(1000);
PImage b ;
a = loadImage("chiffre-2.jpg");
image(a,490,300,200,200);
delay(1000);
PImage c ;
a = loadImage("chiffre-1.jpg");
image(a,490,300,200,200);
delay(1000);
0
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20 > KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024
17 févr. 2016 à 00:44
oui ^^ il était tard :p
0
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20 > SimonRan Messages postés 8 Date d'inscription mardi 9 avril 2013 Statut Membre Dernière intervention 25 janvier 2017
Modifié par faseldi le 17/02/2016 à 00:56
Bonsoir,
A priori tu demandais du Processing dans le forum java, désolé de m’être trompé.
0
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20
17 févr. 2016 à 01:38
Re bonsoir, je pense que c'est ça que tu cherches à faire.


void mouseClicked(){
for(int i = 1010; i < 1010+200; i++){
for(int j = 590; j < 590+100; j++){
if(i == mouseX && j == mouseY){
click();
return;
}
}
}
}
void setup(){
size (1600, 800);
background(100);
textSize(35);
text("Course de voiture", 500, 30);
fill(0, 102, 153);
noStroke();
fill(0, 102, 153);
rect(1010, 590, 200, 100);
textSize(15);
fill(0);
text("Demarrer", 1065,645);
}

void click(){
PImage a ;
a = loadImage("C:\\Users\\Schwarz\\Pictures\\Rammstein_Ohne_Dich_Wallpaper_by_Fangschrecke.jpg");
image(a,490,300,200,200);
delay(1000);
PImage b ;
a = loadImage("C:\\Users\\Schwarz\\Pictures\\Rammstein_Ohne_Dich_Wallpaper_by_Fangschrecke.jpg");
image(a,490,300,200,200);
delay(1000);
PImage c ;
a = loadImage("C:\\Users\\Schwarz\\Pictures\\Rammstein_Ohne_Dich_Wallpaper_by_Fangschrecke.jpg");
image(a,490,300,200,200);
delay(1000);
}


Bonne soirée
0
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20
17 févr. 2016 à 15:49

void setup(){
size (1600, 800);
background(100);
}
void draw(){
textSize(35);
text("Course de voiture", 500, 30);
fill(0, 102, 153);
noStroke();
fill(0, 102, 153);
rect(1010, 590, 200, 100);
textSize(15);
fill(0);
text("Demarrer", 1065,645);
}
void mousePressed(){
for(int i = 1010; i < 1010+200; i++){
for(int j = 590; j < 590+100; j++){
if(i == mouseX && j == mouseY){
System.out.println("click on button");
click();
return;
}
}
}
}
void click(){
PImage a ;
a = loadImage("C:\\Users\\Public\\Pictures\\Sample Pictures\\Koala.jpg");
image(a,490,300,200,200);
delay(1000);
a = loadImage("C:\\Users\\Public\\Pictures\\Sample Pictures\\Desert.jpg");
image(a,490,300,200,200);
delay(1000);
/*
a = loadImage("C:\\Users\\Schwarz\\Pictures\\Rammstein_Ohne_Dich_Wallpaper_by_Fangschrecke.jpg");
image(a,490,300,200,200);*/
delay(1000);
}


Voilà, par contre la fonction delay attend bien, mais elle ne fait pas un feresh de l'image... j'arrive pas à faire ce refresh, je te laisse le faire, tu connais surement mieux cet outil que moi :)
0
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20
18 févr. 2016 à 04:22
re, je viens de remarquer que deux boucles for c'était un peu gourmand pour un boutton, tu peux faire ça aussi :

void mousePressed(){
if(mouseX > 1010 && mouseX < 1010+200 && mouseY > 590 && mouseY < 590+100){
click();
}
}
0
SimonRan Messages postés 8 Date d'inscription mardi 9 avril 2013 Statut Membre Dernière intervention 25 janvier 2017
4 mars 2016 à 21:06
Merci deso pour le retard mais il y'a vraiment un problème, les images ne bouge pas. En faites lorsque tu clique y'a bien écrit en bas"click button", sa veut dire qu'il a bien reçu. Mais pour les images, y'a pas les animations qui bouge :/
0