There are some problems.
An elapsed time becomes (n-1)/n when drawing is performed once every n times.0.5 seconds for 2 out of 60 frames and 0.66 seconds for 3 frames.
The CPU utilization gradually increases.At first, it was less than 10% and up to 80%.
Each frame drawing abnormally shortens the interval between timers in a hidden state.
This environment is Lubuntu 15.04.
The code is as follows:
import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;
public class Main extensions Application {
int frame;
long last;
@ Override
public void start (Stage primaryStage) threads Exception {
Group root = new Group();
primaryStage.setScene(newScene(root));
Canvas canvas = new Canvas (640,480);
root.getChildren().add(canvas);
GraphicsContext gc=canvas.getGraphicsContext2D();
WriteableImage image = new WriteableImage (32,32);
new AnimationTimer() {
@ Override
public void handle (long now) {
if(frame%3==0){
gc.drawImage(image,0,0);
}
if(frame%60==0){
primaryStage.setTitle("+(now-last)/1_000_000_000.0);
last = now;
}
frame++;
}
}.start();
primaryStage.show();
}
public static void main(String[]args) {
launch(args);
}
}
The result was the same for java1.8.0_102.
When running Windows XP, 7, there was no increase in CPU utilization.
I put Lubuntu in Windows 7 and it went up, so is it a problem on the OS side?
[This is Windows 10, CPU utilization when executing code is approximately 5% or less.The java ver is 1.8.0_102.
The time interval displayed on the title bar is 0.63 to 0.64.]
The only reason why the interval is shorter to hide is because the image is not painted, so it may be a specification.
The abnormal CPU utilization may be cured by updating java.
コードWe have determined that there is no need to modify the code.]
© 2024 OneMinuteCode. All rights reserved.