面向对象的Java与UMLrunningball实验报告

实验报告班级:2012212103姓名:周如艅学号:2012212285专业:电子商务实验代码:packagezry;importjava.awt.*;//导入抽象窗口工具包,因为Applet程序都是在窗口中运行的,必须要包括运行它的窗口的支持importjava.applet.*;//使用图形绘制等功能@SuppressWarnings("serial")publicclassrunningballextendsAppletimplementsRunnable{Threadmy_thread=null;//创建一个线程privateintx=this.getWidth();privateinty=50;//设置小球的初始位置booleanup=false;//定义一个布尔量,控制小球是向上跳还是向下跳publicvoidstart()//applet中没有main方法,Applet启动的顺序是init()、start()、paint(){my_thread=newThread(this);//分配一个新的线程对象my_thread.start();//启动一个线程是start()方法,启动线程之后start()方法会去调用run方法内容。区别:start是创建并启动一个线程,而run()是要运行线程中的代码。}publicvoidrun(){while(true)//死循环,使程序一直执行{repaint();//擦去旧图,重新绘制新图try{Thread.sleep(50);//thread.sleep()是让线程休眠,也就是暂时中断线程,50毫秒}catch(InterruptedExceptione){}//抛出异常,否则程序会报错}}publicvoidstop()//{my_thread.stop();}publicvoidpaint(Graphicsg){x=x-5;if(x<0)x=this.getWidth();//获得Component(this)的宽度,其中this指的是当前类的一个实例化对象,是Applet的一个子类//就是当小球跳到面板左端的边界时,又从面板的右端重新跳if(up)y=y+5;elsey=y-5;if(y<50)up=true;//小球在距上边界50像素时,开始向下跳if(y>(this.getHeight()-50))up=false;//小球在距下边界50像素时,开始向上跳g.setColor(newColor((int)Math.floor(Math.random()*256),(int)Math.floor(Math.random()*256),(int)Math.floor(Math.random()*256)));//绘制随机着色的小球。math.floor(x)返回小于参数x的最大整数,即对浮点数向下取整;Math.random()是令系统随机选取大于等于0.0且小于1.0的伪随机double值。由于1是不会取到的值,所以应该为256而不是255;g.fillOval(x,y,30,30);}}实验结果:随机捕获跳动的小球:存在问题:由线程调用paint()方法进行绘制,用repaint()进行刷新显示.但是这样的动画会有个缺点:动画效果绘制出来会有闪烁。调用repaint()的原因是,在java虚拟机中此方法会自动的调用update()方法,update(...)方法会自动调用paint(...),这些都是虚拟机内部自动执行的。update内部定义源代码:publicvoidupdate(Graphicsg){if(isShowing()){if(!(peerinstanceofLightweightPeer)){g.clearRect(0,0,width,height);}paint(g);}}绘制窗体大小的矩形背景覆盖之前画的图形,这样图形便被update后的背景覆盖了,update后再调用paint()方法,在另一位置又画出一个物体来。如此循环,便出现像电影中一帧一帧的画面。但是,正是这种先用背景色覆盖再重绘图像的方式导致了闪烁。在两次看到不同位置物体及的中间时刻(极短的时间),总是存在一个在短时间内被绘制出来的空白画面(颜色取背景色)。但即使时间很短,如果重绘的面积较大的话花去的时间也是比较长的,再加上画的图形比较复杂,闪烁的效果就会比较明显。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?