Utilisation de Processing (Image en boucle)

SimonRan Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
SimonRan Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   20
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Remarque : ce code est en pur Java, il faudra l'adapter pour Processing.
0
SimonRan Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   20 > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
oui ^^ il était tard :p
0
faseldi Messages postés 279 Date d'inscription   Statut Membre Dernière intervention   20 > SimonRan Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   20
 
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   Statut Membre Dernière intervention   20
 

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   Statut Membre Dernière intervention   20
 
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   Statut Membre Dernière intervention  
 
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