Problème de création d'objet [PROCESSING]
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Problème de création d'objet [PROCESSING]



  1. #1
    croco01

    Problème de création d'objet [PROCESSING]


    ------

    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) ??
    Merci d'avance

    -----
    je suis capable du pire mais aussi du meilleur mais dans le pire c'est moi le meilleur

  2. #2
    Paraboloide_Hyperbolique

    Re : Problème de création d'objet [PROCESSING]

    Bonjour,

    Je ne vois pas très bien le problème: chargez les données de votre objet une fois dans la mémoire vive (dans une variable privée de votre classe par exemple) et ensuite faites l'affichage...

  3. #3
    Dlzlogic

    Re : Problème de création d'objet [PROCESSING]

    Bonjour,
    Pourrait-on voir la description de la classe ?
    Que fait le constructeur de la classe ?
    Je suppose que vous utilisez QT, je ne connais pas la fonction display. C'est une fonction que vous avez écrite, ou fait-elle partie de la bibliothèque de dessin ?

  4. #4
    croco01

    Re : Problème de création d'objet [PROCESSING]

    Bonjour, et merci de vos réponses
    Je vais essayer d’être un peu plus clair afin que vous cerniez mon problème:
    Je n'utilise pas QT mais PROCESSING (un autre IDE open-source)
    les sketch processing sont tous contitués de la même manière:
    -une fonction setup (qui ne s’exécute qu'une seule fois)
    -une fonction draw qui elle s’exécute en boucle

    En parallèle j'ai créé un objet dans un fichier appart cette objet est constitué de la sorte, dans une class:
    - les variables de l'objet
    -le constructeur
    -et enfin la fonction display

    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? une solution proposée par Paraboloide_Hyperbolique serait de mettre mon image dans la fonction setup mais je ne peux pas car ça réduirai a néant ma "construction par brique" alors une suggestion?
    Merci de vos réponses
    je suis capable du pire mais aussi du meilleur mais dans le pire c'est moi le meilleur

  5. A voir en vidéo sur Futura
  6. #5
    Dlzlogic

    Re : Problème de création d'objet [PROCESSING]

    Bonjour,
    Pour ce genre de chose, j'utilise un fichier .INI
    De toute façon il faut mettre votre PNG dans la classe, comme le dit Paraboloïde, mais le nom du fichier n'est pas précisé, c'est le nom qui sera lu à la ligne 25 du fichier INI.

  7. #6
    croco01

    Re : Problème de création d'objet [PROCESSING]

    Bonjour, je vais me renseigner sur ces fichiers .INI mais je crois que Processing n'est pas adapté pour ce genre de choses, j'ai lu sur Wikipedia que Processing etait:
    "un langage de programmation (hors fonctions sensibles telles que l'accès à des fichiers extérieurs)" donc a priori...
    Mais merci de la réponse.
    je suis capable du pire mais aussi du meilleur mais dans le pire c'est moi le meilleur

  8. #7
    Paraboloide_Hyperbolique

    Re : Problème de création d'objet [PROCESSING]

    Bonsoir,

    Je ne connais pas du tout ce langage. En cherchant un peu, j'ai trouvé un tutoriel et les exemples suivant:

    http://processing.org/examples/

    Peut-être qu'en particulier le lien suivant peut vous aider ? http://processing.org/examples/createimage.html

  9. #8
    Dlzlogic

    Re : Problème de création d'objet [PROCESSING]

    Bonsoir,
    Une réponse rapide.
    L'utilisation d'un fichier .INI ne dépend pas du langage, mais uniquement de la logique de programmation.
    La première action de l'exécutable est de lire un fichier TXT et stocker dans différentes variables, globales ou pas des constantes que l'on pourrait appeler "d'environnement". C'est une méthode qui n'est propre à aucun langage. Si on lui donne le suffixe .INI, c'est juste pour lui donner l'importance qu'il mérite.
    Par ailleurs, il est bon de lui donner le format :
    TYPE = VALEUR
    ou
    <TYPE> valeur1 valeur2 ... </type> // conforme au format XML
    Mais tout est possible.
    Bonne soirée.

  10. #9
    croco01

    Re : Problème de création d'objet [PROCESSING]

    Bonsoir,
    Merci pour les liens paraboloide, mais je connaissais deja ses sites, c'est la réferences Processing, et on peut voir dans les exemples que les images sont chargées une bonne fois pour toute dans la fonction setup , moi je veux a tous prix éviter cela... afin de me créer ma "mini librairie" comme expliqué dans mon précédent message. J'ai cherché sur le net comment créer une vraie librairie, car au final cela reviendrais au même et réglerais tous mes problèmes de CPU mais tout le monde dit que c'est compliqué mais personne ne peux expliquer pourquoi...
    =>Donc je vous pose la question Savez vous comment créer une librairie Processing? Si vous avez de la doc dessus je suis preneur...

    Sinon les fichiers .ini m'ont l'air prometteurs mais je ne trouve pas vraiment d'explication a leurs sujet, j'ai trouvé un tuto sur le site du Zér0 mais il parle principalement de php...
    je suis curieux d'en apprendre plus sur ces fameux fichiers encore une fois si vous avez un bon site la dessus je prends.
    Merci a tous
    je suis capable du pire mais aussi du meilleur mais dans le pire c'est moi le meilleur

  11. #10
    Dlzlogic

    Re : Problème de création d'objet [PROCESSING]

    Bonjour,
    Concernant les librairies, en ce qui me concerne, on crée une librairie par ce qu'on est sûr qu'on ne va pas la changer, elle est ferme et définitive, avec un beau nœud par dessus. Et c'est justement le contraire que vous voulez faire.

    Un fichier INI n'a rien de particulier si vous le faites vous même, par exemple, fichier animaux.INI
    Code:
    5
    Chien.png
    Chat.png
    Lapin.png
    Tigre.png
    Souris.png
    La première ligne, c'est le nombre de noms de fichiers, puis sur chaque ligne, le noms des fichiers.
    Au début de l'exécution, vous lisez ce fichier, puis vous chargez les images correspondantes et vous les stockez là où il faut.
    Quand vous dessinez vos objets, les images sont déjà en mémoire.
    Tant que vous n'aurez pas montré votre classe, votre source display etc. on ne pourra pas comprendre ce qui vous pose un problème.

  12. #11
    croco01

    Re : Problème de création d'objet [PROCESSING]

    Bonjour, voici mon code:
    Le fichier principal:
    Code:
    void setup()
    {
    size(800,560);
    background(255);
    //c'est ici qu'il faut charger les images
    }
    
    Bouton Bouton = new Bouton(570,500);//création du bouton
    
    void draw()
    {
      Bouton.display(); //Affichage du bouton 
    }
    et dans un autre fichier je crée un objet dont voici le code:
    Code:
    class Bouton {
    
    
      //Déclaration des paramètres de base
      int X_Bouton;
      int Y_Bouton;
       
     
      //Constructeur
      Bouton (int nouvX_Bouton, int nouvY_Bouton) 
      {
        
        X_Bouton          = nouvX_Bouton;
        Y_Bouton          = nouvY_Bouton;
      }
    //Dessin de l'objet 
      void display() 
      {
        
        PImage img_Bouton;
        img_Bouton = loadImage(boutonpng);//image bouton de base
        image(img_Bouton, X_Bouton, Y_Bouton);// Affichage de l'image qui compose le bouton
         
     }
     
    }
    Malheureusement la fonction display s’exécute continuellement donc c'est ce qui pose problème. Normalement je devrais mettre l'image dans la fonction setup qui s'execute une fois en debut de programme, mais moi je veux la chargée une seule fois mais depuis le 2eme fichier.
    Merci de vos reponses
    PS: je continue mes recherches pour les fichiers .ini merci
    je suis capable du pire mais aussi du meilleur mais dans le pire c'est moi le meilleur

  13. #12
    Dlzlogic

    Re : Problème de création d'objet [PROCESSING]

    Je crois que vous ne retrouverez rien de plus sur les fichier ini.
    Dans les variables privées de votre classe Bouton, rajoutez ces 2 lignes
    PImage img_Bouton;
    img_Bouton = loadImage(boutonpng);//image bouton de base
    La seconde sera à mettre dans le constructeur, donc le chargement de l'image sera fait une seule fois.
    Bien-sûr, ces deux lignes seront à supprimer de le fonction display()

    Le fichier INI n'est même pas nécessaire, sauf si vous voulez prévoir un environnement variables.
    Je suppose que la fonction image(...) est définie par ailleurs.

    C'est bizarre qu'il n'y ait pas le mot clé
    public:
    avant le constructeur. Ext-ce vraiment du C/C++ ?

  14. #13
    croco01

    Re : Problème de création d'objet [PROCESSING]

    Bonjour, ça n'est ni du C, ni du C++, c'est un langage appart, Processing est le nom d'un IDE et d'un langage ça doit se rapprocher du C mais c'est basé sur du java a ce que j'ai compris, la fonction image est une fonction propre au langage, elle permet d'afficher une image et prends en paramètre: le nom de la variable contenant l'image, la position en X et la position en Y a partir d'un repère dont l'origine est situé sur le coin supérieure gauche de la fenêtre. Cependant avec l'IDE il est possible de créer un fichier .exe donc je suppose que les .ini doivent fonctionner mais vous avez raison on ne trouve pas grand chose la dessus..
    Merci de passer du temps sur la résolution de mon problème.
    je suis capable du pire mais aussi du meilleur mais dans le pire c'est moi le meilleur

  15. #14
    croco01

    Re : Problème de création d'objet [PROCESSING]

    Bonjour, j'ai réussi, avec l'aide d'un autre forum spécialisé PROCESSING, a trouvé une solution a mon problème, voila le code:
    le fichier principal
    Code:
    Bouton bouton;
    
    void setup() {
      size(800, 560);
      background(255);
      //c'est ici qu'il faut charger les images
      bouton = new Bouton(100, 100);//création du bouton qui se placera a 100px sur x et y
    }
    
    
    void draw() {
      bouton.display(); //Affichage du bouton
    }
    et le 2eme fichier:
    Code:
    class Bouton {
      PImage img;
      int posX;
      int posY;
    
      //constructeur
      Bouton(int nouvXX, int nouvYY) {
        posX          = nouvXX;
        posY          = nouvYY;
        img=loadImage ("monimage.png");
      }
    
      Bouton() {
        img=loadImage ("monimage.png");
        posX = 0;
        posY = 0;
      }
    
      void display () {
        image (img, posX, posY);
      }
    }
    la solution était de tout mettre dans le constructeur qui est une boucle qui ne s’exécute qu'une fois, il fallait aussi créer la variable qui contiens l'objet en debut de fichier principal et ça fonctionne mon CPU se porte mieux.
    MERCI a vous d'avoir passé du temps sur mon problème.
    je suis capable du pire mais aussi du meilleur mais dans le pire c'est moi le meilleur

  16. #15
    Dlzlogic

    Re : Problème de création d'objet [PROCESSING]

    Bonjour,
    Il me semble que c'est ce que je vous avais indiqué.
    Le constructeur n'est pas une boucle qui s'exécute qu'une fois, c'est une fonction qui crée un objet, entre autre, réserve de la mémoire pour y mettre des données qui y resteront tant que l'objet n'a pas été détruit.

Discussions similaires

  1. Processing --> gestion des touches (buton)
    Par philouxy dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 18/01/2013, 23h22
  2. Programmation processing ethernet
    Par Davarcroft dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 25/03/2012, 19h24
  3. création d'un objet insolite
    Par invite439c177e dans le forum Électronique
    Réponses: 1
    Dernier message: 11/10/2011, 22h22
  4. Logiciel de création d'objet 3D gratuit...?
    Par invite0f5c99d3 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 30/09/2009, 02h37
  5. Création d'un objet qui réagit au son
    Par sylvainfranck dans le forum Électronique
    Réponses: 7
    Dernier message: 27/04/2007, 08h55