Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2013-08-08 17:56:48 Création d'objets constitués d'images

croco01
nouveau membre
Lieu: lyon
Date d'inscription: 2013-08-08
Messages: 9

Création d'objets constitués d'images



Bonjour,j'ai un soucis dans le développement de mon programme processing, je vous explique:
Je souhaite créer des objets, jusque la rien de plus simple, je crée une class, dans cette class un constructeur puis une méthode display() qui s'execute continuellement et qui est destinée a dessiner mon objet. Le problème c'est que dans ma fonction display je dois charger une image (qui constitue une partie de mon objet). Etant donné que display s’exécute environ 30 fois par seconde cela veut dire que mon image est chargée 30 fois aussi !! ce qui occasionne une consommation excessive des ressources CPU. Il me faudrait un moyen de ne charger qu'une seule fois cette image (au début de l'objet) Comment faire?
J'ai bien pensé a mettre mon image dans la méthode setup() qui elle ne sexecute qu'une seule fois en début de programme mais le problème c'est que je veux conserver TOUT mon objet dans un fichier et éviter d'étaler le code a droite et a gauche...

Donc ma question est la suivante il y a t il une fonction qui serais l’équivalent de setup (qui s’exécute 1 seule fois) mais qui se placerait dans une fonction class (dans un objet) ??
Pour être plus clair:
Dans le manuel de Processing il est dit que c'est dans la fonction display que l'on dessine l'objet c'est donc la dedans que j'ai dessiné mon objet qui est entre autre constitué d'une image PNG, normalement les images doivent être chargé une bonne fois pour toute dans la fonction setup mais moi je voudrais intégrer toutes le images utile pour mon objet dans mon fichier objet et non dans mon fichier principal, comme ça je pourrais enlever et ajouter des fichiers dans mon répertoire afin d'avoir plus ou moins d'objets dispo.

Par exemple je crée un objet appelé boutonRouge dans un fichier bien spécifique, en parallèle, je crée un fichier principal ou il y a une fonction setup et une fonction draw, pour obtenir un bouton rouge il me suffirais de joindre le fichier boutonRouge au projet puis de créer et d'afficher ce bouton (grâce a 2 lignes de code dans la fonction draw)
ce mode de fonctionnement permettra de me créer une sorte de mini "libraire" qui se construirai a la manière de Lego chaque brique pourra être retirée et ajoutée selon l'utilisation...
Vous avez suivi?
le souci c'est que la fonction display est appelée 30 fois par secondes donc mon image est elle aussi chargé 30 fois/seconde donc connaissez vous un moyen de charger mon image une bonne fois pour toute sans la mettre dans la fonction setup?
Voici mon code:
le fichier principal:

et le fichier objet,l'image du bouton est dans le fichier data et se nomme bouton.png

Merci de vos réponses

Hors ligne

 

#2 2013-08-08 18:06:52 Re : Création d'objets constitués d'images

oyster_twiter
membre
Lieu: saint-herblain
Date d'inscription: 2008-04-01
Messages: 444
Site web

Re: Création d'objets constitués d'images



Salut,

Tu peux faire ce que tu souhaites dans le constructeur de ta classe.
On peut comparer le constructeur à la partie setup() de ton programme, même si dans la profondeur théorique de la programmation je me fait tirer dessus à boulet rouge.
Donc déplacer les éléments à n'appeler qu'une seule fois dans ton constructeur, qui lui sera appeler une seule fois dans ton setup par ex.

Hors ligne

 

#3 2013-08-08 18:58:25 Re : Création d'objets constitués d'images

croco01
nouveau membre
Lieu: lyon
Date d'inscription: 2013-08-08
Messages: 9

Re: Création d'objets constitués d'images



Bonjour, j'ai pensé a utiliser le constructeur mais je n'ai pas réussi a créer un code qui fonctionne, que dois-je mettre exactement dans le constructeur? PI image? img_bouton? image(...)? ou les 3 en même temps? car rien ne fonctionne comment régler ce problème?
Merci

Hors ligne

 

#4 2013-08-08 19:37:27 Re : Création d'objets constitués d'images

Makio135
membre
Lieu: Lyon
Date d'inscription: 2010-11-11
Messages: 89
Site web

Re: Création d'objets constitués d'images



class maClasse {
PImage img;

maClasse (){
img=loadImage ("monimage.png");
}

void display (){
image (img, 0, 0);
}
}

Hors ligne

 

#5 2013-08-08 21:58:23 Re : Création d'objets constitués d'images

croco01
nouveau membre
Lieu: lyon
Date d'inscription: 2013-08-08
Messages: 9

Re: Création d'objets constitués d'images



Bonsoir, et merci de la réponse,mais après avoir suivi vos indications ça ne fonctionne toujours pas voici le code qui devrais fonctionner mais qui ne fonctionne pas:
le fichier principal:

et le fichier secondaire:

class Bouton {
PImage img;
int PosX;
int PosY;

//constructeur
Bouton(int nouvXX, int nouvYY){
    PosX          = nouvXX;
    PosY          = nouvYY;
}

Bouton(){
img=loadImage ("monimage.png"); 
}

void display (){
image (img, PosX, PosY);
}

}

Processing me retourne cette erreur et m'ouvre une fenêtre vide qui ne répond pas:
NullPointerException
puis quand je force l’arrêt de mon programme Processing me dit :
Could not run the sketch (target VM failed to initialize)
For more information, read revisions.tkt and Help? Troubleshooting.


Que pensez vous de cette erreur?¨je précise que si je metla ligne "img=loadImage ("monimage.png"); " dans la fonction display cela marche mais mon CPU travail beaucoup, ça n'est donc pas une histoire de liens ou de fichier non présent dans le répertoire data...
Merci de vos réponses

Hors ligne

 

#6 2013-08-08 23:05:03 Re : Création d'objets constitués d'images

Makio135
membre
Lieu: Lyon
Date d'inscription: 2010-11-11
Messages: 89
Site web

Re: Création d'objets constitués d'images



C'est parce que tu crées 2 constructeur (ce qui est tout à fait possible) mais pour créer ton bouton tu utilises le constructeur qui n'initialise pas l'image.  Tu devrais mettre la partie img=loadImage (...) dans le premier constructeur et supprimer le second

Hors ligne

 

#7 2013-08-08 23:34:38 Re : Création d'objets constitués d'images

croco01
nouveau membre
Lieu: lyon
Date d'inscription: 2013-08-08
Messages: 9

Re: Création d'objets constitués d'images



Bonsoir, quand je le met dans le 1er constructeur processing n'arrive pas a trouver l'image a afficher il renvoit l'erreur:
"the file "monimage.png" is missing make sure the url is valid or that the file has been added to your sketch and is readable"
pourtant l'image PNG est présente dans le dossier data et si je charge l'image dans la fonction display processing la trouve....une suggestion?
Merci

Hors ligne

 

#8 2013-08-09 01:48:13 Re : Création d'objets constitués d'images

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Création d'objets constitués d'images



Bonsoir,

Je ne sais pas si cela va résoudre ton problème, mais il faut faire attention. Le nom de la variable est identique à celui de la classe.
Par convention, on met une majuscule à la première lettre du nom d'une classe sinon pour les instances de la classe il faut mettre une minuscule.

Bouton bouton = new Bouton();

et dans le draw() :

bouton.display();

Comme dans la méthode display tu utilises les trois variables de ta classe, il est nécessaire de les initialiser dans chacun des constructeurs.

De plus, pour une meilleure lisibilité, il vaut mieux déclarer ta variable globale (instance de ta classe) avant la fonction setup()
Et dans la fonction setup() l'initialiser

Bouton bouton;

void setup() {
  bouton = new Bouton();
}

Pour résumer :

Dernière modification par Mushussu (2013-08-09 01:56:40)

Hors ligne

 

#9 2013-08-10 01:56:35 Re : Création d'objets constitués d'images

croco01
nouveau membre
Lieu: lyon
Date d'inscription: 2013-08-08
Messages: 9

Re: Création d'objets constitués d'images



MERCI beaucoup, je crois que ça marche pour l'instant j'ai lancé mon sketch et il fonctionne sachant que le processeur est un peu moins surchargé a vue d’œil, mais j'y pense, comment savoir si mon CPU travail normalement pour ce que je lui demande? ou bien travail-il encore trop ? il faudrait que j'arrive a quantifier cette charge de travail pour me faire une idée.
Je regarderai plus en détail ce code, qui semble fonctionner, demain car a cette heure de la nuit j'ai plus ma tête.
Bonne soirée et encore merci.

Dernière modification par croco01 (2013-08-10 01:57:39)

Hors ligne

 

#10 2013-08-10 12:51:44 Re : Création d'objets constitués d'images

croco01
nouveau membre
Lieu: lyon
Date d'inscription: 2013-08-08
Messages: 9

Re: Création d'objets constitués d'images



Encore un GRAND MERCI c'est exactement ce qu'il me fallait après mise en oeuvre du code complet tout fonctionne et mon processeur se porte beaucoup mieux!! Bonne journée a vous

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024