Ir ao conteúdo
  • Cadastre-se
Main.cpp

Java JavaFX - desenhando e movendo esfera 3D

Recommended Posts

Criamos um caminho (path),
e traçamos rotas dentro deste caminho
usando Moveto para o ponto de partida,
e LineTo para as outras rotas,
de sorte que as quatro rotas formam
um quadrado, e nestas estradas invisível,
se move a nossa esfera 3D.
O início dos ciclos depende do acionamento
de um botão (Início), mas podemos
pará-lo a qualquer momento clicando
no botão (Pausa), porém se o botão pausa,
não for acionado, o programa encerra as
operações automaticamente no fim de 60
segundos, e posiciona a esfera no ponto
de partida.

 

Veja abaixo um vídeo com o programa funcionando:

 

 

Veja abaixo o código do programa:

 

import javafx.animation.PathTransition;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
import javafx.util.Duration;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Sphere;

public class PROJETO extends Application {
     // Criando o objecto Pane
     Pane root = new Pane ( );
     // Criando o objecto scene
     Scene scene = new Scene ( root, 600, 310 );
     Canvas canvas = new Canvas ( 600, 310 );
     GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     // Criando um caminho (Path)
     Path path = new Path ( );
     // Movendo-se para o ponto de partida
     MoveTo moveTo = new MoveTo ( 10, 160 );
     // Criando a primeira linha
     LineTo linha_1 = new LineTo ( 460, 160 );
     // Criando a segunda linha
     LineTo linha_2 = new LineTo ( 460, 10 );
     // Criando a terceira linha
     LineTo linha_3 = new LineTo ( 10, 10 );
     Button botao_Inicio = new Button ( "Inicio" );
     Button botao_Pausa = new Button ( "Pausa" );
     // Desenhando uma esfera
     final Sphere esfera = new Sphere ( 40 );
     // Criando o material da esfera
     PhongMaterial cria_material = new PhongMaterial ( );
     // /////////////////////////////////////////////////////////////////////////
     public void Informe ( ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 200, 220 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 240, 220 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 200, 235 );
         ctx.setFill ( Color.RED );
         ctx.fillText ( " MUITO OBRIGADO", 250, 290 );
     }
     // /////////////////////////////////////////////////////////////////////////
     public void stop_And_PlayButton ( ) {
         cria_material.setDiffuseColor ( Color.DARKBLUE );
         cria_material.setSpecularColor ( Color.BLUE );
         // Posiciona a esfera na horizontal e vertical
         esfera.setLayoutX ( 60 );
         esfera.setLayoutY ( 80 );
         esfera.setMaterial ( cria_material );
         // Criando a transição do path
         PathTransition pathTransition = new PathTransition ( );
         // Definindo a duração da transição
         pathTransition.setDuration ( Duration.millis ( 2000 ) );
         // Configurando o nó para a transição
         pathTransition.setNode ( esfera );
         // Configurando o caminho para a transição
         pathTransition.setPath ( path );
         // Configurando a contagem de ciclos para a transição
         pathTransition.setCycleCount ( 60 );
         // Configurando o valor de reversão automática para true
         pathTransition.setAutoReverse ( false );
         botao_Inicio.setOnMouseClicked ( ( new EventHandler < MouseEvent > ( ) {
              public void handle ( MouseEvent event ) {
                   System.out.println ( "Movimentando!!!" );
                   pathTransition.play ( );
              }
         } ) );
         botao_Inicio.setStyle (
                   "-fx-text-fill: black;"
                            + "-fx-background-color: #DFB951;"
                            + "-fx-border-radius: 20;"
                            + "-fx-background-radius: 20;"
                            + "-fx-padding: 5;"
                   );
         botao_Pausa.setStyle (
                   "-fx-text-fill: black;"
                            + "-fx-background-color: #DFB951;"
                            + "-fx-border-radius: 20;"
                            + "-fx-background-radius: 20;"
                            + "-fx-padding: 5;"
                   );
         botao_Inicio.setLayoutX ( 330 );
         botao_Inicio.setLayoutY ( 250 );
         botao_Pausa.setLayoutX ( 250 );
         botao_Pausa.setLayoutY ( 250 );
         botao_Pausa.setOnMouseClicked ( ( new EventHandler < MouseEvent > ( ) {
              public void handle ( MouseEvent event ) {
                   System.out.println ( "Parado!!!" );
                   pathTransition.stop ( );
              }
         } ) );
     }
     // /////////////////////////////////////////////////////////////////////////
     @Override
     public void start ( Stage stage ) {
         // Configurando um título para o stage
         stage.setTitle ( "JAVAFX - DESENHANDO E MOVENDO OBJETOS 3D" );
         //Criando uma moldura retangular em canvas
         ctx.setStroke ( Color.rgb ( 96, 255, 0 ) );
         ctx.setLineWidth ( 10.0 );
         ctx.strokeRoundRect ( 10, 10, 580, 290, 10, 10 );
         ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 15 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - DESENHANDO E MOVENDO OBJETOS 3D", 125, 40 );
         Informe ( );
         stop_And_PlayButton ( );
         // Adicionando o scene para o stage
         stage.setScene ( scene );
         // Adicionando todos os elementos ao path
         path.getElements ( ).addAll ( moveTo, linha_1, linha_2, linha_3 );            
         root.getChildren ( ).addAll ( esfera, canvas, botao_Inicio , botao_Pausa  );
         //Exibindo todo o conteúdo do stage
         stage.show ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     public static void main ( String args [ ] ) {
         launch ( args );
     }
}

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×