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 :

Déformation rectangle animée


Sujet :

JavaFX

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 178
    Points : 43
    Points
    43
    Par défaut Déformation rectangle animée
    bonjour;
    je voudrais deformer un rectangle 2D dans une animation mais je ne trouve aucun tutorial ;pouvez vous me donner une idée
    merci

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Cela dépend de quelle transformation tu veux appliquer.

    S'il s'agit d'une transformation qui respecte le parallélisme des coté, tu peux avoir un Rectangle et modifier ses dimensions via une Timeline :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    final Rectangle rectangle = new Rectangle(50, 50, 250, 100);
    rectangle.setFill(Color.RED);
    root.getChildren().add(rectangle);
    final Timeline animation = new Timeline();
    animation.getKeyFrames().add(new KeyFrame(Duration.ZERO, new KeyValue(rectangle.widthProperty(), 100)));
    animation.getKeyFrames().add(new KeyFrame(Duration.seconds(5), new KeyValue(rectangle.widthProperty(), 300)));
    animation.playFromStart();
    Tu peux aussi utiliser les transitions toutes prêtes TranslateTransition, ScaleTransition, RotateTransition, pour arriver à des effets similaires.

    Si au contraire tes 4 sommets doivent bouger indépendamment les uns des autres, tu vas plutôt devoir utiliser un Path (la classe Polygon ne supportant pas des valeurs observables elle ne se prête pas à ce genre de chose) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    final Path rectangle = new Path();
    rectangle.getElements().add(new MoveTo(50, 50));
    rectangle.getElements().add(new LineTo(300, 50));
    rectangle.getElements().add(new LineTo(300, 150));
    rectangle.getElements().add(new LineTo(50, 150));
    rectangle.getElements().add(new ClosePath());
    rectangle.setFill(Color.RED);
    rectangle.setStroke(null);
    root.getChildren().add(rectangle);
    final DoubleProperty xProperty = ((LineTo) rectangle.getElements().get(1)).xProperty();
    final DoubleProperty yProperty = ((LineTo) rectangle.getElements().get(1)).yProperty();
    final Timeline animation = new Timeline();
    animation.getKeyFrames().add(new KeyFrame(Duration.ZERO,
            new KeyValue(xProperty, 300),
            new KeyValue(yProperty, 50)));
    animation.getKeyFrames().add(new KeyFrame(Duration.seconds(5), 
            new KeyValue(xProperty, 350),
            new KeyValue(yProperty, 0)));
    animation.playFromStart();
    Ici le sommet supérieur droit va se déplacer.

    Enfin et c'est un peu plus complexe, on peut obtenir un résultat similaire avec une PerspectiveTransform appliquée sur un Rectangle qu'on anime dans une Timeline (ici c'est la perspective qui est animée et non pas le rectangle lui-même) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    final Rectangle rectangle = new Rectangle(50, 50, 250, 100);
    rectangle.setFill(Color.RED);
    root.getChildren().add(rectangle);
    final PerspectiveTransform perspective = new PerspectiveTransform();
    perspective.setUlx(50);
    perspective.setUly(50);
    perspective.setUrx(300);
    perspective.setUry(50);
    perspective.setLlx(50);
    perspective.setLly(150);
    perspective.setLrx(300);
    perspective.setLry(150);
    rectangle.setEffect(perspective);
    final Timeline animation = new Timeline();
    animation.getKeyFrames().add(new KeyFrame(Duration.ZERO, 
            new KeyValue(perspective.urxProperty(), 300),
            new KeyValue(perspective.uryProperty(), 50)));
    animation.getKeyFrames().add(new KeyFrame(Duration.seconds(5), 
            new KeyValue(perspective.urxProperty(), 350),
            new KeyValue(perspective.uryProperty(), 0)));
    animation.playFromStart();
    Ici aussi le sommet supérieur droit va se déplacer.

    Quand le rectangle est rempli avec une couleur unie, le résultat semble identique entre la méthode 2 et 3. Cependant si on utilise un gradient ou une texture, visuellement le résultat devrait différer.
    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 du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 178
    Points : 43
    Points
    43
    Par défaut deformation rectangle animée
    super,merci de ta réponse ;y a du boulot
    j'ai essayé de déplacer un sommet d'un triangle avec scaling mais c'est les 3 sommets qui bougent

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    C'est normal, une mise à l'échelle préserve le parallélisme des cotés. Après tout tu n'as jamais spécifié quel type d'animation tu souhaitais faire.
    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

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

Discussions similaires

  1. Animer un empilement de rectangles
    Par zangaloni dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 31/03/2009, 10h01
  2. Rectangle SOUS animation, sous IE avec swfobject
    Par cebad dans le forum Flash
    Réponses: 0
    Dernier message: 05/03/2009, 15h13
  3. animation et mouvement d'un rectangle avec C++
    Par open_source dans le forum C++
    Réponses: 5
    Dernier message: 10/12/2008, 10h44
  4. [Rectangle] Comment y réaliser une Color Animation ?
    Par Anto03 dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 30/09/2008, 15h24
  5. Animation d'un rectangle
    Par davidg.fr dans le forum Flash
    Réponses: 6
    Dernier message: 11/09/2007, 13h03

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