terça-feira, 18 de setembro de 2018

JavaFX - arrastando imagem pelas setas do teclado

Aqui está um exemplo em JavaFx de como
arrastar uma imagem pelas setas do teclado,
isto é muito justo já que mostramos exemplos
de como arrastar objetos desenhados em 2D e 3D,
tanto com o mouse como pelas setas do teclado.
Acompanhe atentamente na imagem e no vídeo.


Veja abaixo uma imagem do programa em execução:



Veja abaixo um vídeo do programa em execução:


Veja abaixo o código do programa:  


import javafx.application.Application;

import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.event.EventHandler;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.layout.Pane;

public class PROJETO extends Application {
     Group root = new Group ( );
     Scene scene = new Scene ( root, 600, 300 );
     Canvas canvas = new Canvas ( 600, 300 );
     GraphicsContext ctx = canvas.getGraphicsContext2D ( );
    Pane pane = new Pane ( );
     Canvas canvas_1 = new Canvas ( 600, 300 );
     GraphicsContext ctx_1 = canvas_1.getGraphicsContext2D ( );
     private static int MOVE_IMAGEM_X = 0;
     private static int MOVE_IMAGEM_Y = 0;
     Image imagem_1 = new Image ( "Buterfly_1.gif" );
     Image imagem_2 = new Image ( "Buterfly_2.gif" );
     Image imagem_3 = new Image ( "Buterfly_3.gif" );
     Image imagem_4 = new Image ( "Buterfly_4.gif" );
     Image imagem_5 = new Image ( "FundoBranco.png" );
     // /////////////////////////////////////////////////////////////////////////
     public void Informe ( ) {
         //Usando fonte em italic
         ctx_1.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 13 ) );
         ctx_1.setFill ( Color.RED );
         ctx_1.fillText ( "Por: ", 200, 240 );
         ctx_1.setFill ( Color.BLUE );
         ctx_1.fillText ( "Samuel Lima", 240, 240 );
         ctx_1.setFill ( Color.BLACK );
         ctx_1.fillText ( "sa_sp10@hotmail.com", 200, 255 );
         ctx_1.setFill ( Color.RED );
         ctx_1.fillText ( " MUITO OBRIGADO", 250, 280 );
     }
     // /////////////////////////////////////////////////////////////////////////
     public void carregaImagem ( ) {
         scene.setOnKeyPressed ( new EventHandler < KeyEvent > ( ) {
              @Override
              public void handle ( KeyEvent event ) {
                   ctx.drawImage ( imagem_5,  MOVE_IMAGEM_X,
                            MOVE_IMAGEM_Y + 5 );
                   if ( event.getCode ( ) == KeyCode.RIGHT ) {
                        if ( MOVE_IMAGEM_X <= 476 ) {
                            MOVE_IMAGEM_X = MOVE_IMAGEM_X + 5;
                            ctx.drawImage ( imagem_1, MOVE_IMAGEM_X,
                                      MOVE_IMAGEM_Y + 5, 70, 70 );
                        }
                   }
                   else if ( event.getCode ( ) == KeyCode.LEFT ) {
                        if ( MOVE_IMAGEM_X >= 10 ) {
                            MOVE_IMAGEM_X = MOVE_IMAGEM_X - 5;
                            ctx.drawImage ( imagem_2, MOVE_IMAGEM_X,
                                      MOVE_IMAGEM_Y + 5, 70, 70 );
                        }
                   }
                   else if ( event.getCode ( ) == KeyCode.UP ) {
                        if ( MOVE_IMAGEM_Y >= 20 ) {
                            MOVE_IMAGEM_Y = MOVE_IMAGEM_Y - 5;
                            ctx.drawImage ( imagem_4, MOVE_IMAGEM_X,
                                      MOVE_IMAGEM_Y + 5, 70, 70 );
                        }
                   }
                   else if ( event.getCode ( ) == KeyCode.DOWN ) {
                        if ( MOVE_IMAGEM_Y <= 220 ) {
                            MOVE_IMAGEM_Y = MOVE_IMAGEM_Y + 5;
                            ctx.drawImage ( imagem_3, MOVE_IMAGEM_X,
                                      MOVE_IMAGEM_Y + 5, 70, 70 );
                        }
                   }
              }
         } );
     }
     // /////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) throws Exception {
        stage.setTitle ( "JAVAFX - MOVENDO IMAGEM PELO TECLADO" );
         //Usando fonte em italic
         ctx_1.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 22 ) );
         ctx.drawImage ( imagem_1, MOVE_IMAGEM_X, MOVE_IMAGEM_Y + 5, 70, 70 );                  
         //Criando uma moldura retangular em canvas
         ctx_1.setStroke ( Color.BLUE );
         ctx_1.setLineWidth ( 10.0 );
         ctx_1.strokeRoundRect ( 5, 5, 590, 290, 5, 5 );
         ctx_1.setFill ( Color.RED );
         ctx_1.fillText ( "JAVAFX - MOVENDO IMAGEM PELO TECLADO", 70, 40 );
         carregaImagem ( );
         Informe ( );
         pane.getChildren ( ).addAll ( canvas_1 );
         root.getChildren ( ).addAll ( canvas, pane );              
         stage.setScene ( scene );
         stage.show ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     public static void main ( String [ ] args ) {
         launch ( args );
     }
}
 

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.