2009-10-20 10 views
0

J'essaie de faire un bouton de défilement à l'aide d'ImageView qui doit faire défiler certaines images quand on appuie dessus. J'ai essayé de le faire avec la propriété primaryButtonDown du MouseEvent, mais il gèle l'application:JavaFX Déclenche une action pendant que l'utilisateur appuie sur un bouton

ivbutton.onMousePressed = function (e) { 
    while (e.primaryButtonDown){ 
     //Scroll Stuff 
    } 

Connaissez-vous un moyen de créer ce genre de bouton?

Merci. Pourriez-vous lier le défilement à une animation de la timeline?

Répondre

2

Ensuite, le bouton pourrait contrôler le début et l'arrêt de la timeline.

Par exemple, ce qui est similaire, mais il contrôle la rotation d'un carré (vous pourriez peut-être utiliser un TranslateTransition):

import javafx.scene.shape.Rectangle; 
import javafx.scene.paint.Color; 
import javafx.animation.transition.RotateTransition; 
import javafx.animation.Timeline; 
import javafx.scene.control.Button; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.animation.Interpolator; 

def r = Rectangle { 
    x: 80 y: 80 
    height: 100 width: 100 
    arcHeight: 50 arcWidth: 50 
    fill: Color.VIOLET 
} 

def rotTransition = RotateTransition { 
    duration: 1s 
    node: r 
    byAngle: 180 
    repeatCount: Timeline.INDEFINITE 
    interpolator: Interpolator.LINEAR 
} 

def b = Button { 
    text: "Click and hold" 
    onMousePressed: function (e) { 
     rotTransition.play(); 
    }; 
    onMouseReleased: function (e) { 
     rotTransition.stop(); 
    }; 
}; 
Stage { 
    title : "Rotation" 
    scene: Scene { 
     width: 250 
     height: 250 
     content: [r,b] 
    } 
} 
+0

Merci, Mash. Fonctionne très bien. – Averroes

Questions connexes