弹跳圈 : 动画 « 图形用户界面 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 图形用户界面 » 动画屏幕截图 
弹跳圈
弹跳圈
  
/*
 * Copyright (c) 2000 David Flanagan.  All rights reserved.
 * This code is from the book Java Examples in a Nutshell, 2nd Edition.
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
 * You may study, use, and modify it for any non-commercial purpose.
 * You may distribute it non-commercially as long as you retain this notice.
 * For a commercial use license, or to purchase the book (recommended),
 * visit http://www.davidflanagan.com/javaexamples2.
 */

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;

/** An applet that displays a simple animation */
public class BouncingCircle extends Applet implements Runnable {
  int x = 150, y = 50, r = 50// Position and radius of the circle

  int dx = 11, dy = 7// Trajectory of circle

  Thread animator; // The thread that performs the animation

  volatile boolean pleaseStop; // A flag to ask the thread to stop

  /** This method simply draws the circle at its current position */
  public void paint(Graphics g) {
    g.setColor(Color.red);
    g.fillOval(x - r, y - r, r * 2, r * 2);
  }

  /**
   * This method moves (and bounces) the circle and then requests a redraw.
   * The animator thread calls this method periodically.
   */
  public void animate() {
    // Bounce if we've hit an edge.
    Rectangle bounds = getBounds();
    if ((x - r + dx < 0|| (x + r + dx > bounds.width))
      dx = -dx;
    if ((y - r + dy < 0|| (y + r + dy > bounds.height))
      dy = -dy;

    // Move the circle.
    x += dx;
    y += dy;

    // Ask the browser to call our paint() method to draw the circle
    // at its new position.
    repaint();
  }

  /**
   * This method is from the Runnable interface. It is the body of the thread
   * that performs the animation. The thread itself is created and started in
   * the start() method.
   */
  public void run() {
    while (!pleaseStop) { // Loop until we're asked to stop
      animate()// Update and request redraw
      try {
        Thread.sleep(100);
      // Wait 100 milliseconds
      catch (InterruptedException e) {
      // Ignore interruptions
    }
  }

  /** Start animating when the browser starts the applet */
  public void start() {
    animator = new Thread(this)// Create a thread
    pleaseStop = false// Don't ask it to stop now
    animator.start()// Start the thread.
    // The thread that called start now returns to its caller.
    // Meanwhile, the new animator thread has called the run() method
  }

  /** Stop animating when the browser stops the applet */
  public void stop() {
    // Set the flag that causes the run() method to end
    pleaseStop = true;
  }
}

           
         
    
  
Related examples in the same category
1. 事件调度线程事件调度线程
2. 定时器的动画
3. 旋转和缩放矩形。
4. 淡出图像:形象逐步得到更加透明,直到它完全是无形的。
5. 字体大小动画
6. 催眠动画催眠动画
7. 噪声图像噪声图像
8. 如何创建动画:绘制和线程如何创建动画:绘制和线程
9. 如何创建动画如何创建动画
10. 跳出线程跳出线程
11. 动画:反弹
12. 图像反弹图像反弹
13. 文字动画文字动画
14. 缓冲动画演示缓冲动画演示
15. 催眠螺旋催眠螺旋
16. 动画演示动画演示
17. 河内塔
18. 制作自己的动画:一系列的图像
19. 动画组成技术
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.