2015-10-31 2 views
0

Как я могу одушевить объект класса, который унаследован от ImageView, из определения класса?JavaFx: Как оживить унаследованный узел?

Мой код:

public class CustomImageView extends ImageView{ 

public CustomImageView(String imageLocation){ 

    this.setImage(new Image(imageLocation)); 
    FadeTransition fadeIn = new FadeTransition(); 
    fadeIn.setDuration(new Duration(2000)); 
    fadeIn.setFromValue(0); 
    fadeIn.setToValue(1); 
    fadeIn.setNode(this); 
    fadeIn.play(); 

    fadeIn.setOnFinished(ae->System.out.println("Finished!")); 
    } 
} 

код отображает сообщение, когда анимация закончена, но сам узел не анимированные.

ответ

0

Хотя ваш код должен теоретически работать, немного лучше было бы:

public class CustomImageView extends ImageView { 
    public CustomImageView(String imageLocation){ 
     this.setImage(new Image(imageLocation)); 
     this.setOpacity(0); // completely transparent when created 
    } 

    // can play anytime on demand 
    public void playFadeInAnimation(Runnable action) { 
     FadeTransition fadeIn = new FadeTransition(Duration.seconds(2), this); 
     fadeIn.setFromValue(0); 
     fadeIn.setToValue(1); 
     fadeIn.setOnFinished(e -> action.run()); 
     fadeIn.play(); 
    } 
} 

Где-то еще, где вы используете CustomImageView

CustomImageView view = new CustomImageView(...); 
someParent.getChildren().add(view); // display on screen 
view.playFadeInAnimation(...);  // play animation 
Смежные вопросы