1 package com.neuedu.test;
2
3 import java.awt.Graphics;
4 import java.awt.Image;
5
6 import com.neuedu.constant.Constant;
7 import com.neuedu.util.GameUtill;
8 import com.neuedu.util.MyFrame;
9
10 public class Round extends MyFrame {
11
 1 package com.neuedu.util;
2
3 import java.awt.Color;
4 import java.awt.Component;
5 import java.awt.Frame;
6 import java.awt.Graphics;
7 import java.awt.Image;
8 import java.awt.event.WindowAdapter;
9 import java.awt.event.WindowEvent;
10
11 import com.neuedu.constant.Constant;
12
13 public abstract class MyFrame extends Frame {
14 public void loadFrame () {
15
16 setSize(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);
17 setLocationRelativeTo(null);
18 setTitle("窗口");
19 setResizable(false);
20 setVisible(true);
21 addWindowListener(new WindowAdapter() {
22
23 @Override
24 public void windowClosing(WindowEvent e) {
25 // TODO Auto-generated method stub
26 System.exit(0);
27 }
28
29 });
30 new MyThread().start();
31 }
32
33 class MyThread extends Thread {
34
35 @Override
36 public void run() {
37 while (true) {
38 repaint();
39 try {
40 Thread.sleep(60);
41 } catch (InterruptedException e) {
42 // TODO Auto-generated catch block
43 e.printStackTrace();
44 }
45 }
46 }
47
48 }
49 Image offScreenImage = null ;//创建双缓冲,因为repaint太快
50 @Override
51 public void update(Graphics g) {
52 if(offScreenImage == null) {
53 offScreenImage = this.createImage(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);
54 }
55 Graphics gOffScreen = offScreenImage.getGraphics();
56 Color c = gOffScreen.getColor();
57 gOffScreen.setColor(Color.WHITE);
58 gOffScreen.fillRect(0,0,Constant.GAME_WIDTH,Constant.GAME_HEIGHT);
59 gOffScreen.setColor(c);
60 paint(gOffScreen);
61 g.drawImage(offScreenImage, 0, 0, null);
62 }
63 }
12     /**
13 * @param args
14 */
15 Image snow = GameUtill.getImage("com/neuedu/img/star.png");
16 int y = 250;
17 int x = 700;19 double degree = Math.PI/6;
20 double speed= 0.1;
21 @Override
22 public void paint(Graphics g) {
23
24 // TODO Auto-generated method stub
25 g.drawImage(snow,x,y,50,50,null);
26 x += 25* Math.cos(degree);
27 y += 25* Math.sin(degree);
28 degree += speed;
29
30 }
31 public static void main(String[] args) {
32 // TODO Auto-generated method stub
33 new Round().loadFrame();
34 }
35
36 }
 1 package com.neuedu.util;
2
3 import java.awt.Image;
4 import java.awt.image.BufferedImage;
5 import java.io.IOException;
6 import java.net.URL;
7
8 import javax.imageio.ImageIO;
9
10 public class GameUtill {
11 public static Image getImage (String imgPath) {
12 URL u = GameUtill.class.getClassLoader().getResource(imgPath);
13 BufferedImage img = null;
14 try {
15 img = ImageIO.read(u);
16 } catch (IOException e) {
17 // TODO Auto-generated catch block
18 e.printStackTrace();
19 }
20 return img;
21
22 }
23 }

使用java实现圆形运动的更多相关文章

  1. Java 运动模糊

    Java 运动模糊代码 想用Java 写个运动模糊的效果,无奈本人水平有限,国内也没找到资源,于是Google到了一个文档,特地分享出来! 本代码源自 http://www.jhlabs.com/ip ...

  2. Google Tango Java SDK开发:Motion Tracking 运动追踪

    Java API Motion Tracking Tutorial运动追踪教程 This page describes how the Java API handles motion tracking ...

  3. java 绘图

    java 绘图 圆形.线条.矩形.填充 插入图片 文字 //绘图 import java.awt.*; import javax.swing.*; public class Index extends ...

  4. Java自学之路---DotCom

    引言 我从接触编程以来,一直是一个C/C++程序猿,因为我喜欢编程时,那种接地气的感觉,认为只有自己管理内存的使用,心理才踏实.但随着工作中不断增加的见闻,不断的从博客和源码中获得新的见解,我发现这个 ...

  5. Java基础教程免费分享

    这是我自己早前听课时整理的Java全套知识,适用于初学者,也可以适用于中级进阶的人,你们可以下载,我认为是比较系统全面的,可以抵得上市场上90%的学习资料.讨厌那些随便乱写的资料还有拿出来卖钱的人!在 ...

  6. canvas三角函数应用

    这个是圆圈旋转的简单案例 var canvas=document.getElementById("canvas"); var cxt=canvas.getContext(" ...

  7. 【轨迹动画css】不规则轨迹动画css教程,弹球,客服广告悬浮层都可以用

    小demo如下,可更具自己需求修改: css @keyframes animX{ 0% {left: 0px;} 100% {left: 500px;} } @keyframes animY{ 0% ...

  8. css3椭圆运动

    通过使用css3实现让元素椭圆运动.而不是圆形运动. 效果1:http://sandbox.runjs.cn/show/ignefell 效果2:http://runjs.cn/code/w2wxjy ...

  9. 走进JavaWeb技术世界10:从JavaBean讲到Spring

    Java 帝国之Java bean (上) 转自: 刘欣 码农翻身 2016-05-27 前言: 最近看到到spring 的bean 配置, 突然想到可能很多人不一定知道这个叫bean的东西的来龙去脉 ...

随机推荐

  1. Java高效开发-fiddler抓包工具

    1.简介 Fiddler是最常用的抓包工具之一,只要打开之后就能够实现数据包抓取,关闭之后会自动取消代理,非常方便本地调试 2.下载 阿里云盘地址:https://www.aliyundrive.co ...

  2. .net core集成使用consul

    快速启动一个consul集群可以参考:使用docker快速部署一个consul集群 .net core集成使用consul是通过consul提供出来api接口来实现的,可以分成两个部分来说明:配置集成 ...

  3. .net core中的Options重新加载机制

    Options是.net core提出的一种辅助配置机制,即选项. 目前,我们可以使用的Options有五种(源码): IOptionsFactory<>:Options的创建工厂(Sin ...

  4. MongoDB开发最佳实践

    MongoDB开发最佳实践 连接到MongoDB · 关于驱动程序:总是选择与所用之MongoDB相兼容的驱动程序.这可以很容易地从驱动兼容对照表中查到: · 如果使用第三方框架(如Spring Da ...

  5. 基于appnium+python+夜神模拟器的自动化

    首先搭好appnium环境!参考https://www.cnblogs.com/testlearn/p/11419797.html 1.安装夜神模拟器 下载安装夜神模拟器后,在cmd命令输入adb c ...

  6. POJ 2456 Aggressive cows(贪心 + 二分)

    原题链接:Aggressive cows 题目大意:农夫 建造了一座很长的畜栏,它包括  个隔间,这些小隔间依次编号为. 但是, 的  头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发生争 ...

  7. RabbitMQ除开RPC的五种消模型----原生API

    2.五种消息模型 RabbitMQ提供了6种消息模型,但是第6种其实是RPC,并不是MQ,因此不予学习.那么也就剩下5种. 但是其实3.4.5这三种都属于订阅模型,只不过进行路由的方式不同. 通过一个 ...

  8. day 19 C语言顺序结构基础2

    (1).算术运算符和圆括号有不同的运算优先级,对于表达式:a+b+c*(d+e),关于执行步骤,以下说法正确的是[A] (A).先执行a+b的r1,再执行(d+e)的r2,再执行c*r2的r3,最后执 ...

  9. 《剑指offer》面试题42. 连续子数组的最大和

    问题描述 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4 ...

  10. Ubuntu下使用VS Code创建Spring Boot工程

    目的 我们将在Ubuntu桌面系统下,使用VS Code(Visual Studio Code)编辑器从零开始创建一个Spring Boot工程,并实现一个简单的RESTful风格接口.使用这套流程的 ...