Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例

上传人:ni****g 文档编号:548692874 上传时间:2024-02-03 格式:DOCX 页数:25 大小:130.93KB
返回 下载 相关 举报
Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例_第1页
第1页 / 共25页
Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例_第2页
第2页 / 共25页
Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例_第3页
第3页 / 共25页
Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例_第4页
第4页 / 共25页
Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例》由会员分享,可在线阅读,更多相关《Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例(25页珍藏版)》请在金锄头文库上搜索。

1、1.1 利用Java实现地球系动画完整实现实例(第4部分)1.1.1 产生地球和月亮、并且月亮围着地球转1、如何实现?(1)什么是软件需求“产生地球和月亮、并且月凫围着地球转。”(2)什么是软件设计(思考)设计的结果其实就是产生出“解决方案”。(3)什么是软件开发实现(编程)程序员按照设计人员的设计文档进行编程实现。(4)什么是软件测试一一找出程序中的“各种缺陷(Bug)”(5)部署和维护一、第一步:创建两个地球线程1、EarthPlanetAppletimport;import;import;import;import;import;import;publicclassEarthPlanet

2、AppletextendsJAppletimplementsRunnableprivateThreadearthMultiThread=null;privateThreadmoonMultiThread=null;privateGraphicsguiGraphics;privateImagealllmagesArrayf;privateintcurrentImageIndex=O;privateintimageWidth=0;privateintimageHeight=0;privatebooleanalllmagesLoaded=false;privatefinalintNUMBERMAGE

3、S=18;privatebooleanisRunedByApplication=false;publicstaticvoidmain(Stringargs)EarthPlanetFrameapplicationJFrame=nulI;applicationJFrame=newEarthPlanetFrame(利用Java实现的地球系动画)EarthPlanetAppletthreadApp!et=null;threadApplet=newEarthPlanetApplet();applicationJFrame.getContentPane().add(MCentern,threadApple

4、t);threadApplet.isRunedByApplication=true;threadApplet.init();threadApplet.start。;applicationJFrame.setVisible(true);publicEarthPlanetApplet()publicvoidstart()if(earthMultiThread=null)earthMultiThread=newThread(this);earthMultiThread.start();)if(moonMultiThread=null)仓ij建出第2个线程对象moonMultiThread=newTh

5、read(this);moonMultiThread.startO;publicvoidstop()if(earthMultiThread!=null)earthMultiThread.stopO;earthMultiThread=null;)if(moonMultiThread!=mill)销毁线程对象moonMultiThread.stopO;moonMultiThread=null;)IpublicvoidloadAlIEarthImage()guiGraphics=getGraphics();alllmagesArray=newImageNUMBERMAGES;MediaTracker

6、tracker=newMediaTracker(this);Stringstrimage;for(intcurrentlndex=1;currentlndex=NUMBERMAGES;currentIndex+)strimage=H/images/imgOOH+(currentindex10)?H0H:+currentindex+【gif;URLoneImageURL=getCIass().getResource(strImage);if(isRunedByApplication)allImagesArraycurrentIndeX-1=Toolkit.getDefaultToolkit().

7、getIniage(oneImageURL);)elseallImagesArraycurrentIndex1=getlmage(onelmageURL);)tracker.addlmage(alllmagesArraycurrentindex-1.0);trytracker.waitForAH();catch(InterruptedExceptione)e.printStackTrace();1alllmagesLoaded=!tracker.isErrorAny();if(!alIIniagesLoaded)stop();guiGraphics.drawString(图像加载错误,可能是没

8、有找到文件!,10,40);return;)imageWidth=allImagesArrayO.getWidth(this);imageHeight=allImagesArrayO.getHeight(this);publicvoidrun()if(!allImagesLoaded)loadAlIEarthlmageO;)repaint();while(true)trydisplaylmage(guiGraphics);currentlmagelndex+;if(currentimageindex=NUMBER_IMAGES)currentimageindex=0:Thread.sleep(

9、50);catch(InterruptedExceptione)stop();)privatevoiddisp!ayImage(Graphicsg)分别显示两个地球图像if(!alIImagesLoaded)return;if(Thread.currentThread()=earthMultiThreacl)g.lrawImage(allImagesArraycurrentImageIndex5(getSize().width-imageVVidth)/2,(getSize().height-imageHeight)/2,null);else/改变坐标位置g.drawImage(allImag

10、esArraycurrentImageIndex,(getSize(),width-ImageWidth)/4,(getSize().height-imageHeight)/4,null);)publicvoidpaint(Graphicsg)if(allImagesLoaded)Rectangler=g.getClipBounds();g.clearRect(r.x,r,y,r.width,r.height);displaylmage(g);)elseg.drawString(正在加载图像,请等待二10,20);)上面的代码主要是再创建出第2个线程,并显示出第2套图像。其中的getGipBo

11、unds方法得到代表画板边界的矩形,然后从这个矩形中提取宽度和高度数据,再清除该矩形区域。如果除掉下面的语句,将会出现什么现象?g.clearRect(r.x,r.y,r.width,r.height);2、Apple七程序方式执行(两个转动的图像)B利用了实现的地母系动画,/.,飞二、第二步:控制两个地球线程的旋转的速度1、需要补充的知识sleep(毫秒数)是Thread类的静态方法,它能够控制线程。如Thread.sleep(lOOO);该线程睡眠1秒钟,等1秒钟之后,继续余下代码执行。但在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被

12、调度为放弃执行,除非出现下面的情况:1)“醒来”的线程具有更高的优先级。2)正在运行的线程因为其它原因而阻塞。2、EarthPlanetApplet程序的代码import;import;import;import;import;import;import;publicclassEarthPlanetAppletextendsJAppletimplementsRunnableprivateThreadearthMultiThread=null;privateThreadnioonMultiThread=null;privateGraphicsguiGraphics;privateImageall

13、ImagesArray;privateintcurrentImageIndex=O;privateintimageWidth=0;privateintimageHeight=0;privatebooleanalllmagesLoaded=false;privatefinalintNUMBERMAGES=18;privatebooleanisRunedByApplication=false;publicstaticvoidmain(Stringargs)EarthPlanetFrameapplicationJFrame=null;applicationJFrame=newEarthPlanetF

14、rame(利用Java实现的地球系动画)EarthPlanetAppletthreadApplet=null;threadApplet=newEarthPlanetApplet();applicationJFrame.getContentPane().add(HCenterH,threadApplet);threadApplet.isRunedByApplication=true;threadApplet.initQ;threadApplet.start();applicationJFrame.setVisible(true);)publicEarthPlanetApplet()publicv

15、oidstart()if(earthMultiThread=null)earthMultiThread=newThread(this);earthMultiThread.start();1if(nioonMultiThread=null)moonMultiThread=newThread(this);nioonMultiThread.start();)publicvoidstop()if(earthMultiThread!=null)earthMultiThread.stop();earthMultiThread=null;)if(nioonMultiThread!=null)nioonMultiThread.stop();nioonMultiThread=null;)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号