IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Animation sans timeline & Co


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Décembre 2005
    Messages : 30
    Par défaut Animation sans timeline & Co
    Je souhaite obtenir une animation simple pour commencer : une ligne qui tourne sur elle même...

    Lorsque j'essaie avec un Canvas ou un node, la ligne s'affiche et une routine tourne sans effet direct. Lorsque celle-ci se termine, l'affichage est modifié comme "prévu" mais il manque les étapes intermédiaires. J'ai parcouru un peu le web et ai essayé de faire un peu gaffe avec les threads (appel depuis le bon thread) mais sans succès manifestement d'où ma question : Est-il possible d'avoir l'équivalent swing du "repaint()" en JFX ? Parce les animations (celles de JFX), ça fonctionne mais ce n'est finalement pas ce que je recherche...

    Voilà! Si vous avez un tuto expliquant ça, je suis preneur.

    Merci

    Chak

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Oui et non...

    Oui, si tu utilises Canvas car Canvas contient du contenu "mort" (dead pixels) qui n'evolue que quand tu dessines explicitement dedans. Donc il faut recréer un système similaire a ce qui existe en AWT/Swing/Java2D :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    final PauseTransition repaintPause = new PauseTransition(Duration.seconds(1/60d));
    repaintPause.setOnFinished(actionEvent -> repaint());
    final SequentialTransition repaintTimer = new SequentialTransition(repaintPause);
    repaintTimer.setCycleCount(SequentialtTimer.INDEFINITE);
    repaintTimer.play();
     
    [...]
     
    protected void repaint() {
       // Vidage de la surface pour nettoyer la pile de dessin du Canvas.
       canvas.getGraphicsContext2D().clearRect(0, 0, width, height);
       // Dessin du reste.
       [...]
    }
    Également la lib tierce et gratuite FXGraphics2D permet de faire... du Java2D sur du Canvas !!!
    Donc tu peux même te permettre le luxe de faire comme a l'ancienne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private final FXGraphics2D g2d = new FXGraphics2D(canvas.getGraphicsContext2D()); 
     
    [...]
     
    protected void repaint() {
       // Vidage de la surface pour nettoyer la pile de dessin du Canvas.
       canvas.getGraphicsContext2D().clearRect(0, 0, width, height);
       // Dessin du reste sur g2d en utilisant Java2D !!!!!
       g2d.setPaint(java.awt.Color.RED); 
       [...]
    }
    Non, pour le reste en SceneGraph.

    Mais il est plus probable que tu ais code ton animation n'importe comment mais comme tu n'as pas poste ton code, difficile de savoir ce qui cloche
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Décembre 2005
    Messages : 30
    Par défaut
    Merci Bouye.

    Si je n'ai pas mis le code , c'est que mon but n'était pas de faire corriger mon code (je reviendrais peut être plus tard pour ça) mais bien pour avoir une réponse sur cet aspect théorique des animations. La réponse me convient très bien. Je vais tester pour voir ce qui conviendra le mieux.

    ++

    Chak

  4. #4
    Membre averti
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Décembre 2005
    Messages : 30
    Par défaut
    Un message pour dire qu'au cours de mes recherches, je suis tombé sur un blog évoquant la classe AnimationTimer qui permet pas mal de chose finalement. En tout cas , cela m'évite le Canvas...

    ++

    Chak!

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    C'est une classe de l'API de bas niveau d'animation (elle fait aussi partie du package javafx.animation tout comme Timeline) qui permet effectivement de faire des choses avec une granularité fine (ex : Using the JavaFX AnimationTimer

    Ceci dit, et comme le dit l'auteur de l'article (qui est un des créateurs de l'API de propriété JavaFX), cette classe est surtout utile dans autre chose que les animations justement. Utiliser Timeline, les transition et le "tweening" rend les chose bien plus facile que devoir tout se taper à la main dans la majorité des cas. Mais dans le cas présenté ici, oui, une fontaine à particules est plus facile à implémenter avec cette classe qu'avec les autres classes d'animation.

    Hum... je vais quand même aller rajouter une Q/R sur ça dans la future maj de la FAQ puisque ça semble intéresser des gens.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre averti
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Décembre 2005
    Messages : 30
    Par défaut
    Citation Envoyé par bouye Voir le message
    C'est une classe de l'API de bas niveau d'animation (elle fait aussi partie du package javafx.animation tout comme Timeline) qui permet effectivement de faire des choses avec une granularité fine (ex : Using the JavaFX AnimationTimer

    Ceci dit, et comme le dit l'auteur de l'article (qui est un des créateurs de l'API de propriété JavaFX), cette classe est surtout utile dans autre chose que les animations justement. Utiliser Timeline, les transition et le "tweening" rend les chose bien plus facile que devoir tout se taper à la main dans la majorité des cas. Mais dans le cas présenté ici, oui, une fontaine à particules est plus facile à implémenter avec cette classe qu'avec les autres classes d'animation.

    Hum... je vais quand même aller rajouter une Q/R sur ça dans la future maj de la FAQ puisque ça semble intéresser des gens.
    La granularité fine m'intéressait même si, là, en l'occurrence, ça semble limite trop fin . Sinon, un exemple de la doc officielle combine une Timeline et un AnimationTimer ce qui m'a un peu aidé également.

    Marrant mais ça donne l'impression qu'AnimationTimer aurait presque du s'appeler Timeline finalement ...

    ++

    Chak

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un code propre, une anim sans bidouille..
    Par poumpoumpaf dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 16/03/2010, 16h26
  2. [flash 8 pro] Animation sans fenêtre ni bordure
    Par CUCARACHA dans le forum Flash
    Réponses: 3
    Dernier message: 04/05/2007, 13h50
  3. Animations sans openGL et DirectX
    Par halic dans le forum C#
    Réponses: 2
    Dernier message: 19/02/2007, 11h54
  4. [FLASH MX2004] Chargement d'une animation SANS la lire
    Par sanosuke85 dans le forum Intégration
    Réponses: 2
    Dernier message: 19/12/2006, 23h22
  5. exporter une animation sans arrière plan
    Par fenryo dans le forum Flash
    Réponses: 2
    Dernier message: 11/12/2006, 02h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo