




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章java多媒体设计,9.1图形处理9.2图像处理9.32D图像9.4动画处理9.5播放声音,9.1图形处理,Java所有与图形有关的功能都包含在AWT包里。AWT(AbstractWindowsToolkit)是抽象窗口工具包的缩写,支持窗口界面的创建、简单图形的绘制、图形化文本输出和事件监听。用户可利用AWT提供的类和方法,在窗口上绘制各种各样的图形和文本,增加界面的美观。基本图形包括点、线、圆、矩形等,是构成复杂图形的基础。绘制基本图形要使用AWT中的Graphics类,它提供了各种基本图形的绘制方法。,下一页,返回,9.1图形处理,911直线publicvoiddrawLine(intx1,inty1,intx2,inty2)参数(x1,y1)和(x2,y2)是所画直线的两个端点坐标。方法的功能是:在点(x1,y1)和(x2,y2)之间画直线。在窗口上随机绘制10条直线。/DrawLines.javaimportjava.applet.*;importjava.awt.*;importjava.lang.*;publicclassDrawLinesextendsAppletpublicvoidpaint(Graphicsg),上一页,下一页,返回,9.1图形处理,inti,x1,y1,x2,y2;for(i=1;i=10;i+)x1=(int)(Math.random()*10);y1=(int)(Math.random()*200);x2=(int)(Math.random()*380);y2=(int)(Math.random()*200);g.drawLine(x1,y1,x2,y2);,上一页,下一页,返回,9.1图形处理,根据题目的要求,我们使用一组随机数来指定直线两个端点的坐标,并采用循环结构实现10次循环。drawLine方法中的4个整型参数代表直线两个端点的坐标。random()是Math类中的一个方法,该方法返回一个double值,值域为(00,10)。Math类是java1ang包的一部分java1ang可由编译器自动引入,所以我们不必把Math类引入到程序中。直接调用random方法得到返回值太小,在实际应用中往往乘以一个整数因子,并强制类型转换为一个合适的整数。如(int)(Mathrandom()x100)的实际取值范围为0,100。在图形方式下要想准确定位,必须了解屏幕坐标系的构成。Java定义一个窗口工作区的左上角为坐标原点(o,o),以像素点为单位,顺序向右和向下延伸。图形的大小如超过窗口,则超出部分不会显示出来。,上一页,下一页,返回,9.1图形处理,9.1.2设置颜色.创建Color类的一个对象(1)publicColor(intr,intg,intb)整数r,g,b分别表示红,绿,蓝的含量(2)publicColor(intr,intg,intb,inta);整数a表示alpha值,它们的取值为0到255。(3)publicColor(floatr,floatg,floatb)单精度浮点数r,g,b分别表示红,绿,蓝的含量(4)publicColor(floatr,floatg,floatb,floata)单精度浮点数a表示alpha值,它们的取值范围是0.0f到1.0f,上一页,下一页,返回,9.1图形处理,(5)publicColor(intrgb)整型参数rgb指明红(1623bits表示)绿(815bits表示)蓝(07bits表示)三色的取值。(1)使用Graphics类中方法:publicvoidsetColor(Colorc)设置颜色。(2)使用Color类的以下几个方法获取颜色对象:publicColorgetColor();返回当前颜色对象。publicintgetRed();得到颜色对象的red分量。publicintgetGreen();得到颜色对象的green值。publicintgetBlue();得到颜色对象的blue值。publicintgetAlpha();得到颜色对象的alpha值。,上一页,下一页,返回,9.1图形处理,/TestColor.Javaimportjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Font;importjava.awt.Color;publicclassTestColorextendsAppletpublicvoidpaint(Graphicsg),上一页,下一页,返回,9.1图形处理,Strings=中国北京;Colorc1=newColor(255,0,0);Colorc2=newColor(255,0,0,128);Colorc3=Color.blue;g.setColor(c1);g.drawString(红色:+s,20,20);g.setColor(c2);g.drawString(红色:+s,20,40);g.setColor(c3);g.drawString(蓝色:+s,20,60);,上一页,下一页,返回,9.1图形处理,9.1.3字符数组和字节数组的显示Graphics类的以下方法显示字符串、字符数组和字节数组:(1)绘制字符串voiddrawString(Stringstring,intx,inty)坐标点(x,y)与要绘制的字符串string左下角相对应。(2)绘制字符数组voiddrawChars(charchars,intoffset,intnumber,intx,inty)offset是数组的起始下标,number是要绘制的元素个数。(3)绘制字节数组voiddrawBytes(bytebytes,intoffset,intnumber,intx,inty)offset是数组的起始下标,number是要绘制的元素个数。,上一页,下一页,返回,9.1图形处理,/DrawCharByte.javaimportjava.applet.*;importjava.awt.*;publicclassDrawCharByteextendsAppletpublicvoidinit()setBackground(newColor(0,128,0);publicvoidpaint(Graphicsg)g.setFont(newFont(华文行楷,Font.BOLD,40);,上一页,下一页,返回,9.1图形处理,Strings=中国北京;charch=newchars.length();s.getChars(0,4,ch,0);g.setColor(Color.red);g.drawChars(ch,2,2,20,40);bytebyt=65,66,67,68,69,70,71,72,73,74,75;g.setFont(newFont(Arial,Font.ITALIC,30);g.setColor(Color.red);g.drawBytes(byt,0,5,120,40);g.setColor(Color.white);g.drawBytes(byt,0,5,122,38);,上一页,下一页,返回,9.1图形处理,9.1.4绘制Rectangle(1)画矩形:publicvoiddrawRect(intx,inty,intwidth,intheight);x,y是矩形左上角坐标;width,heigh是矩形的宽度和高度。(2)用当前设置的颜色画填充矩形:publicvoidfillRect(intx,inty,intwidth,intheight);(3)清除指定的矩形区域,该区域颜色将为背景颜色:publicvoidclearRect(intx,inty,intwidth,intheight);,上一页,下一页,返回,9.1图形处理,(4)画圆角矩形:publicvoiddrawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight);publicvoidfillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight);前4个参数的含义同上;arcWidth-水平方向圆弧的总宽度;arcHeight-垂直方向圆弧的总高度。,上一页,下一页,返回,9.1图形处理,/DrawRectangle.javaimportjava.applet.*;importjava.awt.*;publicclassDrawRectangleextendsAppletpublicvoidpaint(Graphicsg)setBackground(Color.cyan);g.setColor(Color.blue);g.fillRect(20,20,40,40);/为了演示clearRect()方法的效果,先画一个比清除的区域大2个像素的填充矩形。g.fillRect(79,19,42,42);,上一页,下一页,返回,9.1图形处理,g.clearRect(80,20,40,40);g.fillRoundRect(140,20,40,40,40,40);9.1.5绘制椭圆和弧(1)画椭圆publicvoiddrawOval(intx,inty,intwidth,intheight);publicvoidfillOval(intx,inty,intwidth,intheight);(2)画圆弧画圆弧就是画部分椭圆的圆弧和填充扇形。,上一页,下一页,返回,9.1图形处理,publicvoiddrawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)publicvoidfillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle)startAngle是弧的起始角度;arcAngle表示从起始角度算起转多少度,逆时针为正。画椭圆的方法drawOval(),fillOval具有相同的参数,前两个参数用来定位,实际指定的是包围椭圆的矩形的左上角位置,后2个参数指定了椭圆的宽度和高度,如果取相同值,则画出的是正圆。drawArc方法可画圆弧,fillArc方法实际画出的是扇形。圆弧是椭圆的一部分,夹在两个角之间,因此画圆弧的方法比画椭圆的方法多了两个参数:起始角和张角(以角度为单位)。起始角确定了圆弧的起始位置;张角确定了圆弧的大小,取正(负)值为沿逆(顺加寸针方向画出圆弧。当张角取值大于360时,画出的就是椭圆。我们用一个例子来说明这两个方法的使用。,上一页,下一页,返回,9.1图形处理,/DrawOval.javaimportjava.applet.*;importjava.awt.*;publicclassDrawOvalextendsAppletpublicvoidpaint(Graphicsg)g.setColor(Color.blue);g.drawRect(20,20,100,60);g.fillOval(20,20,100,60);g.drawOval(140,20,100,60);g.fillArc(140,20,100,60,0,60);,上一页,下一页,返回,9.1图形处理,9.1.6画多边形将多边形的各个顶点的坐标对应放到整型数组xPoints(x坐标)和整型数组yPoints(y坐标)中,用以下方法画多边形和填充多边形:publicvoiddrawPolygon(intxPoints,intyPoints,intpoints);publicvoidfillPolygon(intxPoints,intyPoints,intpoints);参数points表示顶点的个数。创建Polygon类的对象p画多边形Polygon类的构造函数:,上一页,下一页,返回,9.1图形处理,Polygon();Polygon(intxPoints,intyPoints,intpoints);画多边形publicvoiddrawPolygon(Polygonp);publicvoidfillPolygon(Polygonp);追加顶点坐标的方法:publicvoidaddPoint(intx,inty)。/DrawPolygon.javaimportjava.applet.*;importjava.awt.*;publicclassDrawPolygonextendsApplet,上一页,下一页,返回,9.1图形处理,publicvoidpaint(Graphicsg)intx=20,40,80,100,80,40;inty=40,20,20,40,60,60;g.setColor(Color.blue);g.fillPolygon(x,y,6);intx1=140,160,200,220,200,160;inty1=40,20,20,40,60,60;Polygonp=newPolygon(x1,y1,6);g.fillPolygon(p);,上一页,下一页,返回,9.1图形处理,多边形的多边是分别用两个整数数组来表示x坐标和y坐标的,并用一个整数表示多边的顶点数,多边形可以说是封闭的,也可以是开放的,取决于最后一条直线终点坐标的取值,若和第一条直线的起点坐标重合画出的多边形为封闭的,否则为开放的。,上一页,返回,9.2图像处理,/ShowImage.Javaimportjava.applet.*;importjava.awt.*;publicclassShowImageextendsAppletpublicvoidpaint(Graphicsg)Imagepic=getImage(getDocumentBase(),a.jpg);intw=pic.getWidth(this),h=pic.getHeight(this),d=5;,下一页,返回,9.2图像处理,g.drawImage(pic,0,0,w,h,this);/按原图宽高显示g.drawImage(pic,w+d,0,w/2,h/2,this);/缩小为原图宽高的一半并显示/截取原图右下角的1/4并显示g.drawImage(pic,w+d,h/2,w+w/2+d,h,w/2,h/2,w,h,this);,上一页,下一页,返回,9.2图像处理,我们以这个程序为例,总结出在Java程序中显示一幅图像的步骤。图像显示分为两个步骤:首先加载图像(即将图像文件读入内存),然后画出图像。程序创建了一个Image对象img,通过Applet的getlmage方法加载图像文件ajpg,将它和img联系起来。然后通过Graphics的drawlmage方法显示图像。加载图像加载图像一般放在初始化方法init中进行。程序中的getlmage方法可加载Java支持的图像文件,它有两个参数,一个是图像文件地址,一个是图像文件名称。由于Applet是面向网络的,因此图像文件的存储位置并不局限于本地计算机的磁盘目录,大部分情况是直接读取Web服务器上的图像文件。getlmage方法返回一个Image对象,它的调用格式为:,上一页,下一页,返回,9.2图像处理,Imagegetlmage(URLurl)Imagegetlmage(URLurl,Stringname)其中url是一个URL类的对象,J代表一个网络地址,例如下面的语句可以加载sun公司Web服务器指定位置上的一幅图片:getlmage(newURL(http:jaVaskincomgraphicspeoplegif”);上述程序中没有直接给出一个具体网络地址,因为在不熟悉网站的情况下读取图像文件是毫无意义的。另一方面,设计Applet一般是为了显示自己已经准备好的图像,所以程序使用了getCodeBase方法。getCodeBase返回的是Applet文件所在的地址,即该文件所在的目录,我们是把图像文件和Applet文件放在同一个目录下的,这样就能保证程序找到该图像文件。另外,使用getDocumentBase方法也可以达到同样目的。,上一页,下一页,返回,9.2图像处理,2、显示图像显示图像需要调用Graphics类的方法drawlmage,它可以将Image对象关联的图像显示在Applet的指定位置。drawlmage方法的调用格式如下:booleandrawlmage(1mageimg,intx,inty,ImageObserverobserver)booleandrawlmage(1mageimg,intx,inty,Colorbgcolor,ImageObserverobserver)其中img就是要显示的图像,x和y是图像显示位置(x和y可取负值,表示一部分图像被移出了显示区)、bgcolor是图像显示区域的背景色、observer是图像加载跟踪器,通常将该参数指定为this,即由Applet负责跟踪图像的加载情况。这两种方法都是将图像照原样显示,能不能对图像进行缩放呢?使用下面两种调用格式就可以对图像进行缩放显示:booleandrawlmage(1mageimg,intx,inty,intwidth,intheight,ImageObserverObserver),上一页,返回,9.32D图像,画图类Graphics2D:更强大的图形处理功能。它是Graphics类的子类。Graphics2Dg2d=(Graphics2D)g;1创建各种图形对象java.awt.geom包中提供了很多构造图形对象的类。直线:Line2Dline=newLine2D.Double(20.0,20.0,320.0,20.0);起点在(20.0,20.0),终点在(320.0,20.0)。长方形:,下一页,返回,9.32D图像,Rectangle2Drect=newRectangle2D.Double(20.0,30.0,90.0,60.0);左上角坐标为(20.0,30.0),宽、高分别为90.0和60.0椭圆:Ellipse2Dellipse=newEllipse2D.Double(220.0,30.0,90.0,60.0);2改变绘图时画笔的大小创建BasicStroke类对象,并使用Graphics2D类的方法:setStroke(BasicStrokebstroke)可以改变画笔线条的宽度。,上一页,下一页,返回,9.32D图像,例如,下面的语句设置画笔线条的宽度为3像素:BasicStrokebstroke=newBasicStroke(3.0f);g2d.setStroke(bstroke);/Draw2D.javaimportjava.applet.*;importjava.awt.*;importjava.awt.geom.*;publicclassDraw2DextendsAppletpublicvoidpaint(Graphicsg),上一页,下一页,返回,9.32D图像,Graphics2Dg2d=(Graphics2D)g;/把父类对象强制转化为子类对象BasicStrokebstroke=newBasicStroke(3.0f);/画笔线条的宽度g2d.setStroke(bstroke);Line2Dline=newLine2D.Double(20.0,20.0,320.0,20.0);g.setColor(Color.blue);g2d.draw(line);g.setColor(Color.red);Rectangle2Drect=newRectangle2D.Double(20.0,30.0,90.0,60.0);g2d.draw(rect);RoundRectangle2Dr_rect=new,上一页,下一页,返回,9.32D图像,RoundRectangle2D.Double(120.0,30.0,90.0,60.0,50.0,25.0);g2d.draw(r_rect);Ellipse2Dellipse=newEllipse2D.Double(220.0,30.0,90.0,60.0);g2d.draw(ellipse);用渐变颜色画填充图形1.java.awt包中类GradientPaint的构造方法:publicGradientPaint(floatx1,floaty1,Colorcolor1,floatx2,floaty2,Colorcolor2);,上一页,下一页,返回,9.32D图像,可创建渐变颜色。前三个参数指定坐标点(x1,y1)的颜色为color1;后三个参数指定坐标点(x2,y2)的颜色为color2;它们之间的颜色由color1渐变到color2。2.通过Graphics2D类的方法:setPaint(GradientPaintgradColor)设置画图显示的颜色为渐变色。如何创建和设置渐变色,上一页,下一页,返回,9.32D图像,/Draw2DFill.Javaimportjava.applet.*;importjava.awt.*;importjava.awt.geom.*;publicclassDraw2DFillextendsAppletpublicvoidpaint(Graphicsg),上一页,下一页,返回,9.32D图像,Graphics2Dg2d=(Graphics2D)g;/把父类对象强制转化为子类对象GradientPaintgradColor=newGradientPaint(0.0f,0.0f,Color.blue,200.0f,0.0f,Color.green);g2d.setPaint(gradColor);Rectangle2Drect=newRectangle2D.Double(0.0,0.0,200.0,60.0);g2d.fill(rect);,上一页,下一页,返回,9.32D图像,java.awt.geom包中提供了AffineTransform类,实现图象的平移、缩放和旋转等功能。1.图形的平移publicvoidtranslate(doubletx,doublety);参数tx指定图形水平方向平移的像素值;参数ty指定图形垂直方向平移的像素值。2.图形的旋转publicvoidrotate(doubletheta,doublex,doubley);第一个参数指定顺时针方向转过的角度,以弧度为单位;参数x和y指定平面图形转动的轴点。,上一页,下一页,返回,9.32D图像,3.图形的缩放publicvoidscale(doublesx,doublesy);参数sx和sy分别表示x方向和y方向的缩放因子(倍数)。/Draw2DTransform.javaimportjava.applet.*;importjava.awt.*;importjava.awt.geom.*;publicclassDraw2DTransformextendsAppletpublicvoidpaint(Graphicsg),上一页,下一页,返回,9.32D图像,Graphics2Dg2d=(Graphics2D)g;/把父类对象强制转化为子类对象BasicStrokebstroke=newBasicStroke(2.0f);g2d.setStroke(bstroke);/设置画笔画线的宽度g2d.setColor(Color.blue);AffineTransformtransf=newAffineTransform();QuadCurve2DquadCurve=newQuadCurve2D.Double(20.0,20.0,60.0,15.0,80.0,80.0);g2d.draw(quadCurve);,上一页,下一页,返回,9.32D图像,transf.translate(100.0,0.0);doublerad=Math.toRadians(360.0/30);for(inti=0;i30;i+)transf.rotate(rad,80.0,80.0);g2d.setTransform(transf);g2d.draw(quadCurve);,上一页,下一页,返回,9.32D图像,transf.scale(2,2);transf.translate(100.0,0.0);for(inti=0;i30;i+)transf.rotate(rad,80.0,80.0);g2d.setTransform(transf);g2d.draw(quadCurve);,上一页,返回,9.4动画处理,动画是指连续而平滑地显示多幅图像。动画的质量一方面取决于图像的质量,另一方面则取决于平滑程度。在计算机上,以10一30幅每秒钟的速度显示动画即可达到满意的动画质量。在很多软件尤其是游戏软件的设计中,动画向程序员提出了挑战,但在java中实现动画则是十分简单的事情。下面让我们一起由浅人深地编写几个动画程序实例,并通过对这些实例的逐步改进来探讨Java动画技术的关键。,下一页,返回,9.4动画处理,9.41动画原理其实,计算机动画原理十分简单,首先在屏幕上显示出第一帧画面,过一会儿把它擦掉,然后再显示下一帧画面,如此循环往复。由丰人眼存在着一个视觉差,所以感觉好像画面中的物体在不断运动。/MovingImg.javaimportjava.awt.*;importjava.applet.*;publicclassMovingImgextendsAppletImagestar,messenger_big;intx=10;publicvoidinit(),上一页,下一页,返回,9.4动画处理,star=getImage(getCodeBase(),merlin.gif);messenger_big=getImage(getCodeBase(),messenger_big.gif);publicvoidpaint(Graphicsg)g.drawImage(star,0,0,this);g.drawImage(messenger_big,x,15,this);tryThread.sleep(50);x+=5;if(x=210)x=10;Thread.sleep(1000);catch(InterruptedExceptione),上一页,下一页,返回,9.4动画处理,repaint();这是一个很简单的动画,在Applet中有一个小人,一个windowsmessage的图标上不断从左边移动到右边。程序中创建了两个Image对象star和messenger_big,在init方法中分别加载了两个图像文件和这两个对象关联起来。添加了变量x用来指定飞船的画出位置,x初始化为l0。在paint方法中,注意到Applet中总是画在指定位置(x,10),而另一个则画在位置(x,15),其中x的值是不断变化的。,上一页,下一页,返回,9.4动画处理,真正使图标实现动画效果是在trycatch块中。程序调用了sleep方法,它是Thread类中定义的一个类方法,调用它可使程序休眠指定的毫秒数。sleep方法会产生中断异常,因此必须放在trycatch块中。如果不调用sleep方法,程序将全速运行,必将导致换帧速度太快,画面闪烁严重。休眠时间设定为50毫秒,相当于换帧速度20(100050)。休眠结束后x的值加5,意味着下一帧图标画面的显示位置向右移动5个点。当飞船移动到最右边即210点位置时,将x赋值10,图标重新回到了左边,这是在语句中实现的。paint方法的最后一条语句是调用repaint方法。repaint方法的功能是重画图像,它先调用update方法将显示区清空,再调用paint方法画出图像。这就形成了一个循环,paint调用了repaint,而repaint又调用了paint,使图标不间断地来回移动。,上一页,下一页,返回,9.4动画处理,运行这个Applet时,画面有闪烁现象。一般来说,画面越大,update以背景色清除显示区所占用的时间就越长,不可避免地会产生闪烁。为了达到平滑而又没有闪烁的动画效果,就应该考虑采取一些补救措施。覆盖update方法可以降低闪烁,但不能消除它。能有效消除闪烁的方法是采用图形双缓冲技术(graphicsdoublebuffering),请看下面改进后的程序。/MovingImg1.javaimportjava.applet.*;importjava.awt.*;,上一页,下一页,返回,9.4动画处理,publicclassMovingImg1extendsAppletImagestar,messenger_big,buffer;GraphicsgContext;intx=10;publicvoidinit()star=getImage(getCodeBase(),a.jpg);messenger_big=getImage(getCodeBase(),messenger_big.gif);buffer=createImage(getWidth(),getHeight();gContext=buffer.getGraphics();,上一页,下一页,返回,9.4动画处理,publicvoidpaint(Graphicsg)gContext.drawImage(star,0,x,this);gContext.drawImage(messenger_big,x,15,this);g.drawImage(buffer,0,0,this);tryThread.sleep(100);x+=2;if(x=210)x=10;Thread.sleep(1000);,上一页,下一页,返回,9.4动画处理,catch(InterruptedExceptione)repaint();publicvoidupdate(Graphicsg)paint(g);,上一页,下一页,返回,9.4动画处理,改进后的程序比原程序增加了buffer和gContext对象,覆盖了update方法。换帧速度提高到100(100010),飞船每次移动2个点,动画效果更加平滑而且无闪烁。buffer是新增的Image对象,用作屏幕缓冲区。gContext是新增的Graphics对象,代表着一个图形上下文即绘图区。在init方法中,程序调用createlmage方法,按照Applet的宽度和高度创建了屏幕缓冲区,然后调用getGraphics方法创建了buffer的绘图区。paint方法改变了图像输出方向,两个图像都被画在屏幕缓冲区内。由于屏幕缓冲区不可见,使得画面交替时的闪烁现象也不可见。当屏幕缓冲区上的画图完成以后,再调用的drawImage方法将整个屏幕缓冲区拷贝到屏幕上,这个过程是直接覆盖,不会产生闪烁。注:这里将merlin.gif改为a.jpg作为背景,以更新覆盖。,上一页,返回,9.5播放声音,JDKl3新增了一个功能强大的数字音频类库javaxsound,使Java程序能录制、处理和播放声音和MIDI音频数据。限于篇幅,本节仅介绍如何利用Applet播放各种声音剪辑。-9.5.1加载声音文件Java开发工具JDKl早比以前版本支持更多的声音格式,共有5种:AIFF、AU、WAV、MIDI、RMF。音质可为8位或16位的单声道和立体声,采样频率从8kHz到48kHz。当然音质越好占用的资源就越多,网络下载时间就越长。对于面向网络的Applet来说,必须考虑声音文件的大小,需要在音质和文件大小之间采取折衷办法。,下一页,返回,9.5播放声音,在Applet中播放声音十分简单,加载声音文件,然后调用play方法播放即可。Java提供了两种播放声音的方式:一种是通过Applet类的play方法,一种是通过AudioClip接口中的方法来播放。Applet的play方法可以将声音文件的加载与播放一并完成,其调用格式如下:voidplay(URLurl)voldplay(URLurl,Stringname)其中URI。是一个网络地址,网络地址若包含声音文件可采用第一种形式,否则采用第二种形式,播放本地计算机上的声音文件也可采用第二种形式。假设有一个MIDI声音文件tripmid和Applet放在同一个目录下,采用如下调用格式即可播放:play(getCodeBase(),”onestop.mid”);,上一页,下一页,返回,9.5播放声音,一旦play方法加载了该声音文件,就立即播放。如果找不到指定的声音文件,不会产生异常,只是听不到声音而已。然而,这种播放是一次性的,若要重播必须重新加载声音文件。如果你想把一个声音文件作为背景音乐连续播放,就需要引入功能更强的AudioClip接口,它包含在javaapplet类库中,程序应引入importjava.Applet.AudioClip。声音文件的加载在创建AudioClip对象的过程中实现。Applet的getAudioClip方法可创建这样的对象,该方法加载指定网络地址的声音文件,并返回一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 志愿者的活动总结13篇
- 汉字注拼音的课件制作
- 汉字教育课件
- 福建省龙岩市2024-2025学年高二下学期期末教学质量检查政治试卷(含解析)
- 安徽省合肥市庐江县柯坦中学2024-2025学年七年级下学期6月期末数学试题(含部分答案)
- 2024-2025学年甘肃省白银十一中八年级(下)期末语文试卷(含答案)
- 大数据技术应用趋势分析
- 快递公司工作总结(集合10篇)
- 跨境电商市场发展瓶颈分析
- 汉字之美课件
- 高速天桥拆除方案(3篇)
- 2025年中国冷链物流行业投资前景分析、未来发展趋势研究报告(智研咨询发布)
- 2025合作合同范本下载
- 手外伤急救诊疗流程标准化
- 农村土地托管培训课件
- 老年专科护士学习培训汇报
- 基孔肯雅热防控培训课件
- 公司岗位补助管理办法
- 游戏与儿童发展课件
- 捐赠助学活动方案
- 健康体检服务投标方案投标文件(技术方案)
评论
0/150
提交评论