赤い円の半径が10~100まで変化するアニメーションの穴埋め問題です。半径が100に達した場合は、10に戻る使用です。よろしくお願いします。
import java.awt.Canvas; import java.awt.Color; import java.awt.Frame; import java.awt.Graphics; import java.awt.Point; import java.awt.image.BufferedImage; /** * Animation using AWT, Thread and double buffering */ public class ExAWTAnimation extends Frame implements Runnable{ //== Parameters of the animation figure =================== //========================================================= // Image data for double buffering private final BufferedImage buffer = new BufferedImage(420, 300, BufferedImage.TYPE_INT_BGR); // The canvas object to show animation figure on the window private final Animation_CVS cvs = new Animation_CVS(); // An inner canvas class private final class Animation_CVS extends Canvas { // Method paint() will be automatically invoked when needed // paint() is for creating one frame of the animation @Override public void paint(final Graphics gCanvas){ // Get the Graphics of the buffer Graphics gBuffer = buffer.getGraphics(); // Clear the buffer by white color gBuffer.setColor(Color.white); gBuffer.fillRect(0, 0, 420, 300); //========================================================= // Use gBuffer to draw the figure on the buffer // (The parameters in the attributes should be used here) //========================================================= // Copy the buffer to the canvas gCanvas.drawImage(buffer, 0, 0, null); } } // Method run() is required since your Frame class declares to implement Runnable interface // We use run() to control the drawing on the canvas. @Override public void run(){ try { // Repeat following: while(true){ // Sleep for 0.1 second Thread.sleep(100); //========================================================= // Change the parameters of the animation figure for next frame of the animation //========================================================= // This is to invoke the paint() method of the canvas object to draw next frame cvs.repaint(); } } catch (Exception ex) { } } /** * Constructor * @param title the title of the window */ public ExAWTAnimation(String title){ super(title); add(cvs); setSize(420,300); new Thread(this).start(); } public static void main(String[] args){ new ExAWTAnimation("Ex#2: Step 1").setVisible(true); } }
質問は何でしょうか。
たぶん勘違いされているのかと思いますが、ここは問題を投げると自動的に誰かが片付けてくれるようなサイトではありません。
[推奨していない質問] https://teratail.com/help/avoid-asking
丸投げなことを明記しませんでした。不快に思われたならすみません。スルーしてください。
明記すればいいというものではない。
[2021/04/17 13:48]の質問編集を読んで
> !!!問題丸投げです。大丈夫な方のみお願いします。!!! J
驚くべきことに勘違いではなかったご様子。きりが無いのと、既に現時点で低評価が4なので、私からは低評価はせず、スルーしておきます。
回答1件
あなたの回答
tips
プレビュー