Advertisement
Riveran

Untitled

Jun 7th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. package com.company;
  2.  
  3. import javafx.application.Application;
  4. import javafx.animation.Animation;
  5. import javafx.animation.Transition;
  6. import javafx.geometry.Rectangle2D;
  7. import javafx.scene.Group;
  8. import javafx.scene.Node;
  9. import javafx.scene.Scene;
  10. import javafx.stage.Stage;
  11. import javafx.util.Duration;
  12. import javafx.scene.image.Image;
  13. import javax.swing.text.Element;
  14. import javax.swing.text.html.ImageView;
  15. import java.util.Collection;
  16.  
  17. public class Main extends Application {
  18. private final Image IMAGE = new Image(getClass().getResourceAsStream("1.png"));
  19. private static final int COUNT = 3;
  20. private static final int COLLUMS = 3;
  21. private static final int OFFSETX = 0;
  22. private static final int OFFSETY = 32;
  23. private static final int WEIGHT = 32;
  24. private static final int HEIGTH = 32;
  25.  
  26.  
  27. @Override
  28. public void start(Stage primaryStage) throws Exception {
  29. final ImageView imageView = new ImageView((Element) IMAGE);
  30. imageView.setViewport(new Rectangle2D(OFFSETX,OFFSETY,WEIGHT,HEIGTH));
  31. final Animation animation = new SpriteAnimation(
  32. imageView,
  33. Duration.millis(3000),
  34. COUNT,COLLUMS,
  35. OFFSETX,OFFSETY,
  36. WEIGHT,HEIGTH
  37. );
  38. animation.setCycleCount(Animation.INDEFINITE);
  39. animation.play();
  40. primaryStage.setScene(new Scene(new Group((Collection<Node>) imageView),300,300));
  41. primaryStage.show();
  42.  
  43. }
  44. public static void main(String[] args) {
  45. launch(args);
  46. }
  47.  
  48. private class SpriteAnimation extends Transition {
  49. private final ImageView imageView;
  50. private final int count;
  51. private final int colums;
  52. private final int offsetX;
  53. private final int offsetY;
  54. private final int width;
  55. private final int height;
  56.  
  57. public SpriteAnimation(
  58. ImageView imageView,
  59. Duration duration,
  60. int count, int colums,
  61. int offsetX, int offsetY,
  62. int width, int height) {
  63. this.imageView = imageView;
  64. this.count = count;
  65. this.colums = colums;
  66. this.offsetX = offsetX;
  67. this.offsetY = offsetY;
  68. this.width = width;
  69. this.height = height;
  70. setCycleDuration(duration);
  71. }
  72.  
  73.  
  74. protected void interpolate(double k){
  75. final int index = Math.min((int) Math.floor(k * count), count - 1);
  76. final int x = (index % colums) * width + offsetX;
  77. final int y = (index / colums) * height + offsetY;
  78. imageView.setViewport(new Rectangle2D(x, y, width, height));
  79. }
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement