Java模拟弹球效果
2013-03-29 20:11
274 查看
/* * 不添加事件监听的话最大最小可以用,但关闭不可以 */ import java.awt.Color; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; //coordinate:坐标系;oval椭圆(矩形的内切,不信可以把矩形和椭圆的参数设置的一样) //计算机画椭圆采用的是参数方程 x = a*cosθ ,y = b*sinθ,不用一般方程;采用弧度 public class BallGame extends Frame { /** * 图片的位置不和src平级就显示不了 */ private static final long serialVersionUID = -4408396034592021515L;//这个是导出jar包时建议的,我也不知道啥意思 Image sun = Toolkit.getDefaultToolkit().getImage("images/sun.jpg"); double x=100; double y=100; double degree = Math.PI/3;//初始角度 public void paint(Graphics g){ //System.out.println("窗口被画了一次!"); g.drawImage(sun, (int)x,(int)y, null); x = x+ 10*Math.cos(degree);//椭圆的中心每次要变化 y = y+10*Math.sin(degree); if(y>300-30){ degree = - degree; } if(x>500-30){ degree = Math.PI-degree; } if(x<0){ degree = Math.PI-degree; } if(y<30){//减去标题栏宽度,因为标题栏也算在坐标系内,否则上面小球会进去 degree = -degree; } } void launchFrame(){ setSize(500, 300); setLocation(50, 50); setTitle("火星十一郎"); setBackground(Color.black); myEvent(); setVisible(true); new PaintThread().start(); } public static void main(String[] args){ new BallGame().launchFrame(); } class PaintThread extends Thread { public void run(){ while(true){ repaint(); //重画窗口! try{ Thread.sleep(40); //40ms 1s=1000ms }catch (Exception e) { e.printStackTrace(); } } } } private void myEvent() { /* * Cannot make a static reference to the non-static method addWindowListener(WindowListener) from the type Window * 把BallGame改成this就对了 */ this.addWindowListener(new WindowAdapter()//窗口监听 { public void windowClosing(WindowEvent e) { //System.out.println("窗体执行关闭!"); System.exit(0); } }); } }
导出jar包直接用MyEclipse的Export,不过我发现我的jar包没显示图片。
Roy说这样写就行了(确实对了),并把images放在src目录下。
Image sun = Toolkit.getDefaultToolkit().getImage(getFilePath("/images/sun.jpg")); public URL getFilePath(String path) { return BallGame.class.getResource(path); }
相关文章推荐
- Java模拟弹球效果(监听键盘)
- Java模拟八大行星运动效果
- java模拟落雪效果----双缓冲技术
- 一个效果不错的Java Swing模拟屏幕截图工具类
- Java Swing模拟水波纹扩散效果动画
- 一个效果不错的Java Swing模拟屏幕截图工具类
- 通过js模拟用户按F5刷新页面效果
- 如何使用Java代码给图片增加倒影效果
- java 模拟线程池
- 在线编程语言模拟(Java,C,Python,R语言,Ruby,PHP,Perl,Go等)
- Java—多线程实现PV效果
- Java【多线程知识总结(10)】线程通信之wait()与notify()的运用--模拟指挥官指挥2个连队交替轰炸战区<另外的写法>
- android:模拟水波效果的自定义View
- java模拟生产者消费者
- Java 后台模拟POST上传
- 模拟借书系统简易版(慕课网java入门第三季异常)
- Java中ThreadLocal模拟和解释
- Silverlight调用一般性处理程序模拟Silverlight调用WCF效果(2)
- 安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果
- Java中ThreadLocal模拟和解释