使用java实现圆形运动
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实现圆形运动的更多相关文章
- Java 运动模糊
Java 运动模糊代码 想用Java 写个运动模糊的效果,无奈本人水平有限,国内也没找到资源,于是Google到了一个文档,特地分享出来! 本代码源自 http://www.jhlabs.com/ip ...
- Google Tango Java SDK开发:Motion Tracking 运动追踪
Java API Motion Tracking Tutorial运动追踪教程 This page describes how the Java API handles motion tracking ...
- java 绘图
java 绘图 圆形.线条.矩形.填充 插入图片 文字 //绘图 import java.awt.*; import javax.swing.*; public class Index extends ...
- Java自学之路---DotCom
引言 我从接触编程以来,一直是一个C/C++程序猿,因为我喜欢编程时,那种接地气的感觉,认为只有自己管理内存的使用,心理才踏实.但随着工作中不断增加的见闻,不断的从博客和源码中获得新的见解,我发现这个 ...
- Java基础教程免费分享
这是我自己早前听课时整理的Java全套知识,适用于初学者,也可以适用于中级进阶的人,你们可以下载,我认为是比较系统全面的,可以抵得上市场上90%的学习资料.讨厌那些随便乱写的资料还有拿出来卖钱的人!在 ...
- canvas三角函数应用
这个是圆圈旋转的简单案例 var canvas=document.getElementById("canvas"); var cxt=canvas.getContext(" ...
- 【轨迹动画css】不规则轨迹动画css教程,弹球,客服广告悬浮层都可以用
小demo如下,可更具自己需求修改: css @keyframes animX{ 0% {left: 0px;} 100% {left: 500px;} } @keyframes animY{ 0% ...
- css3椭圆运动
通过使用css3实现让元素椭圆运动.而不是圆形运动. 效果1:http://sandbox.runjs.cn/show/ignefell 效果2:http://runjs.cn/code/w2wxjy ...
- 走进JavaWeb技术世界10:从JavaBean讲到Spring
Java 帝国之Java bean (上) 转自: 刘欣 码农翻身 2016-05-27 前言: 最近看到到spring 的bean 配置, 突然想到可能很多人不一定知道这个叫bean的东西的来龙去脉 ...
随机推荐
- docker学习:docker安装
Centos7 安装docker 下载安装 yum install docker-ce 启动docker systemctl start docker 创建并编写镜像加速文件 vim /etc/doc ...
- 【】Kerberos原理--经典对话
这是MIT(Massachusetts Institute of Technology)为了帮助人们理解Kerberos的原理而写的一篇对话集.里面有两个虚构的人物:Athena和Euripides, ...
- openmesh - impl - Remove Duplicated Vertices
openmesh - impl - Remove Duplicated Vertices 关于openmesh元素删除实现的介绍参见:openmesh - src - trimesh delete a ...
- 【Warrior刷题笔记】剑指offer 6 24 35. 三道题,让你学会链表递归迭代辅助栈
题目一 从尾到头打印链表 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-l ...
- Python_闭包
闭包并不只是一个python中的概念,在函数式编程语言中应用较为广泛.理解python中的闭包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想. 1.概念介绍 首先看一下维基上对闭 ...
- CentOS7添加开机启动服务或脚本
方法一(rc.local) 改方式配置自动启动最为简单,只需要修改rc.local文件 由于在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod + ...
- 【填坑往事】使用Rxjava2的distinct操作符处理自定义数据类型去重的问题
最近碰到一个问题,自定义数据类型列表中出现了重复数据,需要去重.处理去重的办法很多,比如借助Set集合类,使用双重循环拿每一个元素和其他元素对比等.这里介绍一种简单而且比较优雅的方式:使用Rxjava ...
- Nginx日志通过Flume导入到HDFS中
关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新) flume上传到hdfs: 当我们的数据量比较大时,比如每天的日志文件达到5G以上 使用ha ...
- StringBuffer和String的区别
面试题:String为什么不可变 StringBuffer和StringBuilder的区别 String 和StringBuffer的区别: (一):String 类中的byte数组使用final修 ...
- Ubuntu18.04 内核升级
查看当前版本 在终端输入以下命令并回车 uname -sr 可以发现当前内核为 Linux 4.15.0-88-generic 查看目前最新的稳定内核 访问 The Linux Kernel A ...