Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import javafx.application.Application;
- import javafx.animation.Animation;
- import javafx.animation.Transition;
- import javafx.geometry.Rectangle2D;
- import javafx.scene.Group;
- import javafx.scene.Node;
- import javafx.scene.Scene;
- import javafx.stage.Stage;
- import javafx.util.Duration;
- import javafx.scene.image.Image;
- import javax.swing.text.Element;
- import javax.swing.text.html.ImageView;
- import java.util.Collection;
- public class Main extends Application {
- private final Image IMAGE = new Image(getClass().getResourceAsStream("1.png"));
- private static final int COUNT = 3;
- private static final int COLLUMS = 3;
- private static final int OFFSETX = 0;
- private static final int OFFSETY = 32;
- private static final int WEIGHT = 32;
- private static final int HEIGTH = 32;
- @Override
- public void start(Stage primaryStage) throws Exception {
- final ImageView imageView = new ImageView((Element) IMAGE);
- imageView.setViewport(new Rectangle2D(OFFSETX,OFFSETY,WEIGHT,HEIGTH));
- final Animation animation = new SpriteAnimation(
- imageView,
- Duration.millis(3000),
- COUNT,COLLUMS,
- OFFSETX,OFFSETY,
- WEIGHT,HEIGTH
- );
- animation.setCycleCount(Animation.INDEFINITE);
- animation.play();
- primaryStage.setScene(new Scene(new Group((Collection<Node>) imageView),300,300));
- primaryStage.show();
- }
- public static void main(String[] args) {
- launch(args);
- }
- private class SpriteAnimation extends Transition {
- private final ImageView imageView;
- private final int count;
- private final int colums;
- private final int offsetX;
- private final int offsetY;
- private final int width;
- private final int height;
- public SpriteAnimation(
- ImageView imageView,
- Duration duration,
- int count, int colums,
- int offsetX, int offsetY,
- int width, int height) {
- this.imageView = imageView;
- this.count = count;
- this.colums = colums;
- this.offsetX = offsetX;
- this.offsetY = offsetY;
- this.width = width;
- this.height = height;
- setCycleDuration(duration);
- }
- protected void interpolate(double k){
- final int index = Math.min((int) Math.floor(k * count), count - 1);
- final int x = (index % colums) * width + offsetX;
- final int y = (index / colums) * height + offsetY;
- imageView.setViewport(new Rectangle2D(x, y, width, height));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement