Javafx 简明教程

JavaFX - Light.Spot Effect

聚光源效果是对节点上的聚光灯的模拟。通过对节点应用此效果,会对其投射光线,就好像该光线是由聚光灯产生的。

The Spot Light Source effect is a simulation of a Spot Light on a node. By applying this effect on a node, a light is projected on it, as if it is being generated by a spot light.

Spot Light Source − 此光源的光线会向所有方向衰减。光线的强度取决于物体与光源的距离。

Spot Light Source − The light from this source attenuates in all directions. The intensity of the light depends on the distance of the object from the source.

spot light source

javafx.scene.effect 中名为 Light.Spot 的类表示远光源。此类包含四个属性,它们是:

The class named Light.Spot of the package javafx.scene.effect represents the distant light source. This class contains four properties, which are −

  1. pointsAtX − This property is of the type double and it represents the x coordinate of the direction of vector for this light.

  2. pointsAtY − This property is of the type double and it represents the y coordinate of the direction of vector for this light.

  3. pointsAtZ − This property is of the type double and it represents the z coordinate of the direction of vector for this light.

  4. specularExponent − This property is of the type double and it represents the specular exponent, which controls the focus of this light source.

Example

以下程序是一个演示 JavaFX 照明效果的示例。在其中,我们在场景中绘制文本“欢迎来到 Tutorialspoint”和一个圆形。

The following program is an example demonstrating the lighting effect of JavaFX. In here, we are drawing a text “Welcome to Tutorialspoint” and a circle in a scene.

对于这些,我们应用了照明效果,其中光线由聚光灯发射。

To these, we are applying the lighting effect, where the light is being emitted by a spotlight.

使用名称 SpotLightExample.java 将此代码保存在文件中。

Save this code in a file with the name SpotLightExample.java.

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.Light;
import javafx.scene.effect.Lighting;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;

public class SpotLightExample extends Application {
   @Override
   public void start(Stage stage) {
      //Creating a Text object
      Text text = new Text();

      //Setting font to the text
      text.setFont(Font.font(null, FontWeight.BOLD, 40));

      //setting the position of the text
      text.setX(60);
      text.setY(50);

      //Setting the text to be embedded.
      text.setText("Welcome to Tutorialspoint");

      //Setting the color of the text
      text.setFill(Color.RED);

      //Drawing a Circle
      Circle circle = new Circle();

      //Setting the centre of the circle
      circle.setCenterX(300.0f);
      circle.setCenterY(160.0f);

      //Setting the radius of the circle
      circle.setRadius(100.0f);

      //setting the fill color of the circle
      circle.setFill(Color.CORNFLOWERBLUE);

      //Instantiating the Light.Spot class
      Light.Spot light = new Light.Spot();

      //Setting the color of the light
      light.setColor(Color.GRAY);

      //setting the position of the light
      light.setX(70);
      light.setY(55);
      light.setZ(45);

      //Instantiating the Lighting class
      Lighting lighting = new Lighting();

      //Setting the light source
      lighting.setLight(light);

      //Applying lighting effect to the text
      text.setEffect(lighting);

      //Applying lighting effect to the circle
      circle.setEffect(lighting);

      //Creating a Group object
      Group root = new Group(text,circle);

      //Creating a scene object
      Scene scene = new Scene(root, 600, 300);

      //Setting title to the Stage
      stage.setTitle("Spot light effect example");

      //Adding scene to the stage
      stage.setScene(scene);

      //Displaying the contents of the stage
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

使用以下命令,从命令提示符编译并执行已保存的 java 文件。

Compile and execute the saved java file from the command prompt using the following commands.

javac --module-path %PATH_TO_FX% --add-modules javafx.controls SpotLightExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls SpotLightExample

Output

执行后,上述程序会生成如下所示的 JavaFX 窗口。

On executing, the above program generates a JavaFX window as shown below.

light spot effect example