9 08, 2007
MCTS£¨70-431£©Ñ§Ï°±Ê¼Ç(Ô´´)
µÚÒ»ÕÂSQL Server 2005µÄ°²×°
µÚÒ»½Ú Ñ¡ÔñÕýÈ·µÄÊý¾Ý¿â°æ±¾
²é¿´È«ÎÄ5 07, 2007
ÓÃJAVA¶Ô²ÊɫͼƬ½øÐлҶȱ任(ת)
---- »Ò¶È±ä»»µÄËã·¨ÆäʵºÜ¼òµ¥£¬Ö»ÒªÌáȡÿ¸öÏóËØµãµÄºì¡¢ÂÌ¡¢À¶ÈýÔÉ«£¬È»ºó¸ù¾Ý¹«Ê½£º»Ò¶ÈÖµ= ºìÉ«ÁÁ¶ÈÖµ*30%+ÂÌÉ«ÁÁ¶ÈÖµ*59%+À¶É«ÁÁ¶ÈÖµ*11%£¬¼ÆËã³öÒ»¸ö»Ò¶ÈÖµ£¬²¢½«Æä×÷Ϊºì£¬ÂÌ£¬À¶ÈýÔÉ«µÄÐÂÖµÖØÐÂд»ØÏÔ´æ¼´¿É¡£
---- ¾ßÌå²½ÖèÈçÏ£º
---- Ò»£¬µ÷ÓÃGraphics ¶ÔÏóµÄdrawImage() ·½·¨£¬ÔÚapplet ÖÐÏÔʾ³öÒ»·ùÃûΪ TEST.JPG µÄ²ÊɫͼÏó£¬drawImage() µÄµ÷ÓÃÐÎʽΪ£º g.drawImage(name,x,y, width,heigth,this)¡£
---- ¶þ£¬¶¨ÒåÒ»¸öÊý×é´æ·ÅÕâ·ù²ÊɫͼÏñµÄRGB Öµ£¬Êý×é´óС¾ÍÊÇͼÏñµÄÏóËØ¸öÊý¡£Ê¹ÓÃPixelGrabber()»ñȡÿ¸öÏóËØµãµÄRGBÖµ¡£
---- Èý£¬Ê¹ÓûҶȱ任¹«Ê½¼ÆËã³öÿ¸öÏóËØµãµÄ»Ò¶ÈÖµ£¬²¢½«Æä×÷ΪеÄRGB Öµ´æ·Å»ØÊý×éÖУ¬ÔÙµ÷ÓÃcreateImage()·½·¨¹¹Ôì³öеĺڰ×ͼÏó¡£
---- ËÄ£¬ÏÔʾ³ö¸ÃºÚ°×ͼƬ¡£ÎªÁË·ÀÖ¹±ä»»¹ý³ÌÖеÄÉÁ˸ÏÖÏ󣬳ÌÐòÖл¹Ê¹ÓÃÁËË«»º³å¼¼Êõ£¬¼´ÏÈÔÚÐéÆÁÖлºÃͼÏó£¬ÔÙÒ»´ÎÐÔµÄÏÔʾ³öÀ´¡£
---- ³ÌÐòÖÐʹÓÃÊó±êÀ´¿ØÖƲÊÉ«µ½ºÚ°×µÄ±ä»»¡£
---- »Ò¶È±ä»»µÄtt4.javaÔ´³ÌÐòÈçÏÂËùʾ£º
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
public class tt4 extends Applet
{
Image art,Buf;
int onced=0;
boolean is_color=true;
Graphics Bufg;//ʹÓÃË«»º³åÇø¼¼ÊõÒÖÖÆÉÁ˸£»
Dimension xy=null;
public void init()
{ art=getImage(getDocumentBase(),"test.jpg");
resize(640, 480);//×°ÈëͼƬ£»
}
public void paint(Graphics g)
{ if (onced==0)
//Èç¹ûÊǵÚÒ»´Î×°ÈëͼƬ£¬ÔòÖ±½ÓÏÔʾ£»
{ g.drawImage(art,0,0,this);
}
if ((onced==1)||(onced==2))
//Èç¹ûÕýÔÚ½øÐлҶȱ任£¬ÔòÌáʾµÈ´ý£»
{ g.setColor(new Color(255,200,0));
g.drawString("running!", 1, 30);
}
if (onced==3)
//Èç¹û»Ò¶È±ä»»Íê±Ï£¬ÔòÏÔʾ½á¹û£»
{ if (is_color) g.drawImage(Buf,0,0,this);
else g.drawImage(art,0,0,this);
is_color=!is_color;//ÔÚ²ÊÉ«ÓëºÚ°×Ö®¼ä±ä»¯£»
}
}
public boolean mouseDown(Event evt, int x, int y)
{ if (onced==0)
{ onced=1;
}
repaint();//ÓÃÊó±ê´¥·¢Ê¼þ£»
return true;
}
public boolean mouseUp(Event evt, int x, int y)
{ if (onced==1)
{ onced=2;
int wd=art.getWidth(this); //È¡µÃͼƬ¿í£»
int ht=art.getHeight(this);//È¡µÃͼƬ¸ß£»
GetPixels(art,0,0,wd,ht);//µ÷ÓûҶȱ任·½·¨£»
}
return true;
}
public void GetPixels(Image img,int x,int y,int w,int h)
{ int[]pixels=newint[w*h];
//¶¨ÒåÒ»¿éÄÚ´æ¿Õ¼ä£»
int gray;
PixelGrabber pg=new PixelGrabber(img,x,y,w,h,pixels,0,w);
try{pg.grabPixels();
}
catch(InterruptedExceptione)
{System.err.println("interrupted waiting for pixels!");
return;
}
for(intj=0;j> 16)&0xff)*0.3);
gray+=(int)(((pixels[w*j+i]>>8)&0xff)*0.59);
gray+=(int)(((pixels[w*j+i] )&0xff)*0.11);
//Óɺ죬ÂÌ£¬À¶ÖµµÃµ½»Ò¶ÈÖµ£»
pixels[w*j+i]=(255<<24)|(gray<<16)|(gray<<8)|gray;
}
}
Image pic=createImage(new MemoryImageSource(w,h,pixels,0,w));
Bufg.drawImage(pic,0,0,this); //ÏÔʾºÚ°×ͼƬ£»
onced=3;
repaint();
}
public void update(Graphics g)
{ if(xy==null)
{ xy=this.size();
Buf=createImage(xy.width,xy.height);
Bufg=Buf.getGraphics();
}
paint(g);//ÐÞ¸Äupdate·½·¨£¬±ÜÃâÉÁ˸£»
}
}
---- ½«Ô´³ÌÐò±àÒëºóµÃµ½tt4.classÎļþ£¬ÀûÓÃJava Applet Wizard×Ô¶¯Éú³ÉµÄ HTMLÎļþ(tt4.html) £¬¾Í¿ÉÔÚä¯ÀÀÆ÷ÖÐÐÀÉÍËüµÄЧ¹ûÁË¡£
---- °üº¬appletµÄHTMLÎļþÈçÏÂËùʾ£º
< html >
< head >
< title >¶Ô²ÊɫͼƬ½øÐлҶȱ任< /title >
< /head >
< body >
< p align="center" >< applet
code=tt4.class
name=tt4
width=250
height=188 >
< /applet >
< /body >
< /html >
---- ÆäÖвÎÊýwidth ºÍheight¾ÍÊÇ´ý±ä»»Í¼Æ¬µÄ¿íÓë¸ß¡£Èç¹ûÒª¸ü»»Í¼Æ¬£¬Ç뽫´ý»»Í¼Æ¬¸ÄÃûΪtest.jpg¡£
---- ÔËÐÐʱ£¬µ¥»÷Êó±ê×ó¼ü¾Í¿É½«²ÊɫͼƬ±ä»»³ÉºÚ°×ͼƬ£¬ÔÙµ¥»÷Ò»ÏÂÊó±ê×ó¼üÓÖ¿É»¹ÔΪ²ÊɫͼÏó¡£±¾³ÌÐòÔÚWindows95¡¢Visual J++1.1¡¢IE4.0 »·¾³ÏÂÔËÐÐͨ¹ý¡£
5 07, 2007
Java¶¯»¼°×Ô¶¯ä¯ÀÀͼƬ³ÌÐòµÄ¿ª·¢(ת)
Java¶¯»µÄʵÏÖ£¬Ê×ÏÈÓÃJava.awt°üÖÐGraphicsÀàµÄdrawImage()·½·¨ÔÚÆÁÄ»»³öͼÏó£¬È»ºóͨ¹ý¶¨ÒåÒ»¸öỊ̈߳¬ÈøÃÏß³Ì˯ÃßÒ»¶Îʱ¼ä£¬µ½Ê±ºóÔÙÇл»³ÉÁíÍâÒ»·ùͼÏó£¬Èç´ËÑ»·£¬´Ó¶ø´ïµ½ÏÔʾ¶¯»µÄÄ¿µÄ¡£
1 ÓйظÅÄî¡¢À༰·½·¨
1.1 Ïß³Ì
JavaµÄÖØÒªÌØÐÔÖ®Ò»ÊÇÆäÖ§³Ö¶àÏ̵߳ijÌÐòÉè¼Æ¡£ÔÚ´«Í³µÄ³ÌÐòÉè¼ÆÖУ¬ÒªÖ´ÐжàÈÎÎñÊÇͨ¹ý¶¨Ê±Æ÷Öжϵȷ½·¨£¬¶¨Ê±¼à¿Ø¶à¸öÈÎÎñµÄÖ´ÐÐÇé¿ö£¬²ÉÓÃÈÎÎñÖжÏÇл»µÄ·½Ê½À´ÂÖ»»Ö´Ðи÷¸öÈÎÎñ£¬´Ó¶ø´ïµ½¶àÈÎÎñ²¢·¢Ä¿µÄ¡£ÕâÖÖ·½·¨Ò»·½ÃæÏûºÄÁË´óÁ¿µÄÄÚ´æ¿Õ¼äºÍcpu×ÊÔ´£¬ÁíÒ»·½Ãæ»á´øÀ´ÏµÍ³°²È«ÐÔµÄÎÊÌâ¡£¶øÏß³Ì×÷Ϊ³ÌÐòµÄÒ»¸öÖ´ÐÐÁ÷£¬ÔÚijһ˲¼ä¿É±»¿´³É¼ÆËã¹ý³ÌµÄÒ»ÖÖ״̬£¬Ëü±È½ø³Ì¸üС£¬²¢·¢³Ì¶È¸ü¸ß£¬Òò´ËÒ²³ÆÎªÇá½ø³Ì¡£Ïß³ÌÊÇcpuµ÷¶ÈµÄ»ù±¾µ¥Ôª£¬¶ø½ø³ÌÊÇ×ÊÔ´·ÖÅäµÄ»ù±¾µ¥Ôª£¬Ï̵߳ÄÒýÈë¿ÉÒÔÌá¸ßϵͳµÄÍÌÍÂÁ¿¡¢Ìá¸ßÈÎÎñÖ®¼äµÄͨѶЧÂÊ¡¢ÓÐЧÀûÓÃϵͳ×ÊÔ´¡£
?Ï̵߳Ĵ´½¨
Ï̴߳´½¨ÓÐÁ½ÖÖ·½·¨£¬Ò»ÖÖÊÇÓÃnew²úÉúÒ»¸öThreadÀà¶ÔÏó£¬ÁíÍâÒ»ÖÖ·½·¨ÊÇʵÏÖRunnable½Ó¿Ú¡£ÔÚÐèҪʵÏÖ¶à¼Ì³Ð£¬²¢ÇÒÓÖÒª½¨Á¢¶àÏß³Ìʱ£¬Ö»ÄܲÉÓÃRunnable½Ó¿Ú·½·¨¡£ÎÒÃÇÕâÀï²ÉÓõÚÒ»ÖÖ·½·¨:
ThreadName=new Thread
?sleep(long)
ÈÃÏß³Ì˯ÃßÒ»¶¨Ê±¼ä²»¶¯×÷£¬²ÎÊýµ¥Î»ÎªÇ§·ÖÖ®Ò»Ãë¡£
?suspend()
¹ÒÆðỊ̈߳¬ÔÝÍ£ÆäÖ´ÐС£
?resume()
»½ÐÑ¹ÒÆðµÄÏ̡߳£
1.2 ToolKitÀà
ËüÌṩÁËAWTÓëÆ½Ì¨Ïà¹ØÀàºÍÎÞ¹ØÀàÖ®¼äµÄÁ´½Ó£¬ÌṩÁ˼¸ÖÖ·½·¨À´·ÃÎÊÓëÉ豸Ïà¹ØµÄÒ»Ð©ÌØÕ÷¡£Èç´ÓURL»ò±¾µØÏµÍ³ÖмìË÷ͼÏó¡¢»ñÈ¡ÆÁÄ»µÄÏÔÊ¾ÌØÕ÷µÈ¡£ÔÚ³ÌÐòÖж¨ÒåÒ»¸öToolKitÀà:ToolKit=getToolKit();
1.3 MediaTrackerÀà
ÌṩÁ˹ÜÀíͼÏóÎļþ¼ÓÔØµÄÄÜÁ¦¡£·½·¨StatusID(int id,boolean load)µÄ×÷ÓÃÊǼì²â¼ÓÔØÍ¼ÏóÎļþµÄ״̬(ABORTED,COMPLETE,ERRORED,LOADING)£¬µ±¼ì²âµ½×´Ì¬ÎªCOMPLETEʱ£¬ËµÃ÷ͼÏó¼ÓÔØÍê³É¡£
2 ÎÄ×Ö¶¯»
ÎÄ×Ö¶¯»µÄʵÏÖ³ÌÐò±È½Ï¼òµ¥£¬Ê×ÏÈ£¬ÓÃnew·½·¨´´½¨Ò»¸öнø³Ì£¬ÓÃdrawString()·½·¨ÔÚÆÁÄ»ÏÔʾÏàÓ¦ÎÄ×Ö£¬È»ºóÈýø³Ì˯ÃßÒ»¶¨Ê±¼ä£¬Ê±¼äµ½ºó£¬¸Ä±äÎÄ×ÖÏÔʾλÖã¬ÔÙÖØÏÔÎÄ×Ö¡£ÆäÖаüº¬Ò»¸ö±ß½çÅжϣ¬ÖØÉè×ø±êµÄ¹ý³Ì£¬Èç´ËÍù¸´ÊµÏÖÎÄ×Ö¶¯»¡£³ÌÐòÔËÐкó£¬ÔÚÆÁÄ»ÖÐÑëÏÔʾ"»¶Ó½øÈ붯»ÊÀ½ç!"£¬Ã¿¸ô0.15ÃëÏò×óÒÆ¶¯Ò»´Î£¬Ö±µ½ÆÁÄ»×î×ó¶ËÓÖÖØÐ¿ªÊ¼ÏÔʾ¡£¾ßÌå³ÌÐò¼û³ÌÐò1(AppletС³ÌÐò)¡£
3 ͼÏ󶯻
ͼÏ󶯻µÄʵÏÖ·½·¨ÓëÎÄ×ÖÏàËÆ£¬Ö»²»¹ý¶¨ÒåÁËÒ»¸öImageÊý×飬ÔËÓÃgetImage()·½·¨×°ÔØÏàӦͼÏóÎļþµ½¸ÃÊý×éÖС£³ÌÐòÔËÐк󣬿ɼûµ½Ò»¸ö¿É°®µÄС¾«ÁéÔÚ×÷Å×Çò¶¯×÷¡£ÁíÍ⣬»ùÓÚ³ÌÐò½»»¥ÐԵĿ¼ÂÇ£¬Ôö¼ÓÁËÁ½¸öʼþµÄÏìÓ¦¶¯×÷£¬Ò»¸öÊÇWINDOW_DESTROY£¬¼´¹Ø±ÕÔËÐд°¿Ú£¬Õý³£·µ»Ø¡£ÁíÍâÒ»¸öÊÇMOUSE_DOWN£¬µ±Êó±ê×ó°´Å¥°´ÏÂʱ£¬ÔÝÍ£Ïß³ÌÒÔ±ãÈÃ»Ãæ¾²Ö¹£¬ÔÙ°´Ò»´Î×ó°´Å¥£¬»Ö¸´ÔÝÍ£Ị̈߳¬¼ÌÐøÏÔʾÏÂÒ»·ù»Ãæ¡£
Èç¹û½«³ÌÐòÖеÄС¾«ÁéͼÏóÎļþ»»³ÉͼƬ£¬²¢Ôö¼ÓÑÓ³Ùʱ¼ä£¬Ôò¿ÉÒÔʵÏÖͼƬµÄ×Ô¶¯Çл»£¬±äΪ×Ô¶¯ä¯ÀÀͼƬ³ÌÐò£¬Ô´³ÌÐò¼û³ÌÐò2£¬
4 ¶¯»ÖÊÁ¿µÄ¸ÄÉÆ
ÉÏÒ»³ÌÐòµÄÔËÐкó£¬ÎÒÃÇ·¢ÏÖÁËÁ½¸öÎÊÌâ¡£µÚÒ»ÊdzÌÐòÔÚͼÏóÍêÈ«¼ÓÔØÖ®Ç°¾Í¿ªÊ¼ÏÔʾ£¬³öÏÖÇл»¹ý¿ìÏÖÏó¡£µÚ¶þÊÇ»ÃæÉÁ˸¡£
¶ÔÓÚǰһ¸öÎÊÌ⣬¿ÉÒÔÓÃJava.awt°üÖеÄMediaTrackerÀàÀ´½â¾ö£¬µ±StatusID()·½·¨·µ»ØÖµÎªCOMPLETEʱ£¬ËµÃ÷ËùÓеÄͼÏóÎļþ¼ÓÔØÍê±Ï£¬´Ëʱ²Å¿ªÊ¼ÏÔʾ»Ãæ¡£
µÚ¶þ¸öÎÊÌ⣬½â¾öÆðÀ´Òª¸´ÔÓһЩ¡£ÉÁ˸²úÉúµÄÔÒòÊÇ£¬ÔÚpaint()·½·¨ÖÐÈç¹û¼ÆËã½ÏΪ¸´ÔÓ£¬¼ÆËãºÍ»æÖÆ»ÃæµÄʱ¼ä³¬¹ýÁËÆÁÄ»µÄË¢ÐÂÖÜÆÚ£¬ÔòÖ¡µÄµÚÒ»²¿·ÖÔÚÒ»¸öË¢ÐÂÖÜÆÚÖлæÖÆ£¬ÆäÓಿ·ÖÔÚÏÂÒ»¸ö¡¢ÉõÖÁ¸üºóµÄÖÜÆÚ»æÖÆ£¬ÕâÑù£¬ÔÚÖ¡µÄ²»Í¬²¿·ÖÖ®¼ä²úÉúʱ¼ä¼ä¸ô£¬ÓÉ´ËÔì³ÉÉÁ˸¡£½â¾ö;¾¶Ö®Ò»ÊÇÖØÔØupdate()·½·¨£¬update()µÄȱʡʵÏÖÊÇÇå³ýÔÀ´±³¾°£¬È»ºóµ÷ÓÃpaint()·½·¨¡£Òò´Ëͨ¹ýÖØÔØupdate()£¬Ö»ÓÐÔÚ±ØÒªÊ±²ÅÇå³ýÕû¸ö±³¾°¡£
½â¾ö;¾¶Ö®¶þÊDzÉÓÃË«»º³å¼¼Êõ£¬Ë«»º³å¼¼ÊõÊÇÔÚºǫ́ͼÐÎÇøÄÚ´´½¨Ò»¸öͼÐζÔÏ󣬽«ÐèÒª»æÖƵÄͼÏó»æÓÚÆäÉÏ£¬È»ºó´«¸øpaint()·½·¨£¬ÓÉpaint()·½·¨»æÓÚǰ̨£¬Í¬Ê±£¬ºǫ́ͼÐλº³åÇø½øÈëÏÂһ֡ͼÏóµÄ×¼±¸¡£Í¼1Ϊ˫»º³å¼¼ÊõʾÒâͼ¡£
5 07, 2007
JavaͼÏñ¼¼Êõ(ת)
Ïà¶Ô¶øÑÔ,ͼÐμ¼Êõ½Ï¼òµ¥,ͼÏñ¼¼Êõ½Ï¸´ÔÓ.ÏÂÃæ±ÊÕß´ÓʵÓõĽǶȳö·¢,½²½â¼¸¸öͼÏñ±à³ÌÎÊÌâ.Ê×ÏÈ,ÎÒÃÇ¿´ÏÂÃæÕâ¸ö³ÌÐò.
import java.applet.*;
import java.awt.*;
public class easy extends Applet
{
int i=1;
Image img;
public void init()
{
img=getImage(getCodeBase(),"mama.gif");
}
public void paint(Graphics g)
{
g.drawImage(img,0,0,this);
showStatus(String.valueOf(i++));
}
}
HTML ÎļþÈçÏÂ:
<APPLET CODE="easy.class"WIDTH=300 HEIGHT=300></APPLET>
³ÌÐò·Ç³£¼òµ¥. µ«Äã×¢Ò⵽ûÓÐ,ÔÚä¯ÀÀÆ÷µÄ״̬À¸,ÏÔʾ³öµÄÊýÖµ²¢²»Ò»¶¨ÊÇ1: ÄãÒªÏÔʾµÄͼƬ·ùÃæÔ½´ó,Õâ¸öÊýÖµÔ½´ó.Õâ˵Ã÷ paint() ·½·¨±»µ÷ÓÃÁ˲»Ö¹Ò»´Î.ÄÇô£¬ÊÇË,ÔÚʲôʱºòµ÷ÓõÄ?
ÊÂʵÉÏ,ÿµ±ÓÐеÄͼƬÊý¾Ýµ½´ï»òÉú³Éʱ,JavaС³ÌÐò¶¼»á×Ô¶¯È¥µ÷ÓÃpaint()·½·¨ÖØ»æÆÁÄ».Õâ¸ö¹¤×÷ÓÉImageObserver½Ó¿ÚµÄimageUpdate()·½·¨ÊµÏÖ.Äã¿ÉÒÔ³¬Ô½Õâ¸öimageUpdate()·½·¨,×Ô¼ºÖØÐ±à³Ì.¿¼Âǵ½±¾µØµÄ»úÆ÷´ÓWeb·þÎñÆ÷ÉÏ»ñȡͼƬµÄËÙ¶ÈÒ»°ã±È½ÏÂý,ºÜ¶àʱºòÄã±ØÐëÒªÖªµÀÒѾÓжàÉÙͼƬÊý¾ÝÒѾ±»ÏÂÔØ.ÏÂÃæ¸ø³öÒ»¸öʾ·¶³ÌÐò,³ÌÐò¿ÉÒÔÒ»±ßÏÂÔØ,Ò»±ßÏÔʾ,ͬʱ֪ͨÓû§ÒѾ»ñµÃ¶àÉÙͼƬÊý¾Ý.
import java.awt.*;
import java.applet.*;
import java.awt.image.*;
public class image_download extends Applet
{
Image img;
int step=0;//step ÓÃÀ´±íÊöÒѱ»ÏÂÔØµÄÄDz¿·ÖͼƬµÄ¸ß¶È
int percent=0;//percent ÓÃÀ´±íÊöÒÑÏÂÔØµÄͼƬµÄ¸ß¶ÈռͼƬ×ܸ߶ȵİٷֱÈ
public void init()
{
img=getImage(getCodeBase(),"mama.gif");
}
public void paint(Graphics g)
{
g.drawImage(img,0,0,this);
}
¡¡
//ÏÂÃæÎÒÃdz¬Ô½±¾À´µÄimageUpdate()·½·¨.ÿµ±ÓÐеÄͼƬÊý¾Ýµ½´ï(»ò²úÉú)ʱ´Ë·½·¨»á±»×Ô¶¯µ÷ÓÃ
public boolean imageUpdate(Image img_ob,int flags,int x,int y,int width,int height)
{
if(((flags & SOMEBITS)!=0) & (img_ob==img))//ÅжÏÊÇ·ñÓÖÓÐеÄͼÏñÊý¾Ý¶¼±»ÏÂÔØ
{
step=step+height;//¼ÆËãÒѱ»ÏÂÔØµÄͼƬµÄ¸ß¶È
percent=step*100/img.getHeight(this);//¼ÆËãÕâ¸ö¸ß¶ÈռͼƬ¸ß¶ÈµÄµÄ°Ù·Ö±È
showStatus(percent+"%");//ÔÚ״̬À¸ÏÔʾ
repaint(x,y,width,height);//ÖØ»æÆÁÄ».µ«Ö»»ÐÂÊý¾Ý±í´ïµÄ²¿·Ö.¼òµ¥Ê¹ÓÃrepaint()ÖØ»æ
//Õû¸öÆÁÄ»»áʹ»ÃæÉÁ˸
}
if((flags & ERROR)!=0)//¼ÙÈçÏÂÔØ³ö´í
showStatus("image loading error");
if((flags & ALLBITS)!=0)//¼ÙÈçÈ«²¿Í¼Æ¬Êý¾Ý¶¼ÒÑÏÂÔØÍê
showStatus("Done");
return true;
}
}
HTMLÎļþÈçÏÂ:
<APPLET CODE="image_download.class"WIDTH=300 HEIGHT=300></APPLET>
imageUpdate()²ÎÊý˵Ã÷ÈçÏÂ:
img_ob: ±»¼àÊÓµÄͼÏñ.
flags: ±»¼àÊÓͼÏñµÄ״̬.
ABORT: ͼÏñÉú³É±»Òì³£ÖжÏ
ALLBITS: È«²¿Í¼Ïñ¶¼ÒÑÉú³É
ERROR: ·¢Éú´íÎó
FRAMEBITS: Íê³ÉÒ»·ù
HEIGHT: ±¾´ÎÉú³ÉµÄ¸ß¶È
SOMEBITS: Òѽ«Éú³ÉÁËÒ»²¿·ÖͼÏñ
WIDTH: ±¾´ÎÉú³ÉµÄ¿í¶È
x: xÖá×ø±ê
y: yÖá×ø±ê
width: ±¾´ÎÏÂÔØµÄͼÏñµÄ¿í¶È
height: ±¾´ÎÏÂÔØµÄͼÏñµÄ¸ß¶È
¡¡
ÏÂÃæÓÃÁ½¸öÀý×Ó˵Ã÷ÔõÑù»ñÈ¡´ó·ùͼÏñµÄ¾Ö²¿.µÚÒ»¸öÀý×ÓʹÓÃCropImageFilterÀàÈ¥»ñµÃͼÏñµÄ¾Ö²¿.Äã¿ÉÒÔÕâÑùʹÓÃÕâÖÖ¼¼Êõ:
Ê×Ïȸù¾ÝͼÏñ²Ã¼ô¹ýÂËÆ÷²úÉúͼÏñ¹ýÂËÆ÷.
ImageFilter filter=new CropImageFilter (int x, int y, int width, int height).
x: ²Ã¼ôÆðʼµã X Öá×ø±ê
y: ²Ã¼ôÆðʼµãY Öá×ø±ê
width: ²Ã¼ô¿í¶È
height: ²Ã¼ô¸ß¶È
È»ºó¸ù¾Ý¸ù¾Ý¹ýÂËÆ÷²úÉúͼÏñÉú²úÕß. ImageProducer procuder=new FilteredImageSource(baseImage.getSource(),filter).
baseImage: ½«Òª±»²Ã¼ôµÄͼƬ
È»ºó¸ù¾ÝͼÏñÉú²úÕß²úÉúеÄͼÏñ. Image img=createImage(procuder).
ÏÂÃæµÄ³ÌÐòʹÓÃÉÏÊö¼¼Êõ²Ã¼ôͼƬ.³ÌÐòÔËÐкó,ÄãÓÃ"ÍÏ×§"Êó±êµÄ·½Ê½(°´×¡Êó±ê¼ü²¢Òƶ¯Êó±ê)ÔÚͼƬÉÏÑ¡¶¨Ò»Æ¬ÇøÓò,È»ºóÔÙÔÚÔËÐÐÇøÉϵã»÷Êó±ê,¸Õ²ÅÄãÑ¡¶¨µÄÇøÓòµÄͼƬ½«±»¸´ÖƵ½Õâ¸öλÖÃ.ҪעÒâµÄÊÇ,³ÌÐò²¢Î´¶ÔÑ¡ÔñÇøÓòµÄÆðʼµãºÍÖÕÖ¹µãµÄÏà¶ÔλÖÃ×÷³öÅжÏ,Òò´Ë,ÄãÒ»¶¨ÒªÊ¹ÖÕÖ¹µãÔÚÆðʼµãµÄÓÒÏ·½.
import java.awt.*;
import java.applet.*;
import java.awt.image.*;
public class CropFilterImage extends Applet
{
Image baseImage,cropImage;//baseImageÊÇÔʼͼƬ,cropImageÊǸù¾ÝÑ¡¶¨ÇøÓò²úÉúµÄÐÂͼƬ
int sx,sy;//Ñ¡¶¨ÇøÓòÆðʼµã×ø±ê
int dx=0,dy=0;//ÒªÏÔʾÐÂͼƬµÄλÖÃ
int width,height;//Ñ¡¶¨ÇøÓòµÄ¿íºÍ¸ß
boolean selected=false;//ÓÃÀ´Åж¨ÏÖÔÚÓû§ÔÚ¸Éʲô
public void init()
{
baseImage=getImage(getCodeBase(),"mama.gif");
cropImage=baseImage;
}
public void paint(Graphics g)
{
g.drawImage(baseImage,0,0,this);
g.drawImage(cropImage,dx,dy,this);
}
public boolean mouseDown(Event evt,int x,int y)
{
if(!selected)//¼ÙÈçÓû§¿ªÊ¼Ñ¡Ôñ
{
sx=x;//¼ÇÏÂÆðʼµã
sy=y;
selected=true;
return true;
}
else//¼ÙÈçÓû§ÒѾÉ趨ÁËÑ¡ÔñÇø
{
dx=x;
dy=y;
cropImage=cropImage();//²Ã¼ôͼÏñ
repaint();//ÖØ»ÆÁÄ»
selected=false;
}
return true;
}
public boolean mouseUp(Event evt,int x,int y)
{
if(selected)//Óû§ËÉ¿ªÊó±ê½¡±íʾÒÑÈ·¶¨Ñ¡ÔñÇø
{
width=Math.abs(x-sx);
height=Math.abs(y-sy);
getGraphics().drawRect(sx,sy,width,height);
}
return true;
}
public boolean mouseDrag(Event evt,int x,int y)
{
showStatus("from("+sx+","+sy+") to ("+x+","+y+")");
return true;
}
Image cropImage()
{
ImageFilter filter=new CropImageFilter(sx,sy,width,height);//¸ù¾ÝͼÏñ²Ã¼ô¹ýÂËÆ÷²úÉú¹ýÂËÆ÷
//ÏÂÃæ¸ù¾Ý¹ýÂËÆ÷²úÉúͼÏñÉú²úÕß
ImageProducer producer=new FilteredImageSource(baseImage.getSource(),filter);
Image img=createImage(producer);//¸ù¾ÝͼÏñÉú²úÕß²úÉúÐÂͼÏñ
return img;
}
}
HTMLÎļþÈçÏÂ:
<APPLET CODE="CropFilterImage.class"WIDTH=600 HEIGHT=300></APPLET>
¡¡
ºÜ¶àÇé¿öÏÂÉÏÃæµÄ·½·¨²»ÊµÓÃ.±ÈÈçÄãÏë¶ÔͼƬ×÷³öijÖֱ任,ÉÏÃæµÄ·½·¨¾ÍÎÞÄÜΪÁ¦ÁË.ÏÂÃæµÄ³ÌÐò¸ø³ö¸üÇ¿´óµÄËã·¨:½«Í¼ÏñÊý¾ÝÈ¡µ½Êý×éÖÐ,ÔÙÔÚÊý×éÖн«ÐèÒªµÄÊý¾ÝÌáÈ¡³öÀ´,ÒÀ¾ÝÕâЩÊý¾ÝÔÙÉú³ÉеÄͼÏñÈ¥ÏÔʾ.ÉèÏëÄãÓÐÒ»¸ö·ùÃæ´óÓÚ´°¿Ú³ß´çµÄͼÏñÒªÏÔʾ,Äã±ØÐëÒªÈÃÓû§¿ÉÒÔ¿ØÖÆ´°¿ÚµÄλÖÃ,ͨ¹ýÒÆ¶¯´°¿Ú,ä¯ÀÀ
Õû¸öͼÏñ.³ÌÐòÔËÐкó,Äã¿ÉÒÔÓÃËĸö¹â±ê¼üÒÆ¶¯´°¿Úä¯ÀÀÈ«²¿Í¼Ïñ.
³ÌÐòÖеĹؼü¼¼ÊõÓÐÈý¸ö,µÚÒ»¸öÊÇPixelGrabberÀàÓÃÓÚ»ñȡͼÏñÊý¾Ý.Äã¿ÉÒÔÕâÑùʹÓÃ:
Ê×ÏÈÉú³ÉÒ»¸öPixelGrabberʵÀý:
PixelGrabber pg=new PixelGrabber(Image img,int x,int y,int width,int height,int pix[ ],int offset,int scansize)
img: ±»È¡Êý¾ÝµÄͼÏñ
x: Æðʼµã x Öá×ø±ê
y: Æðʼµã y Öá×ø±ê
width: ͼÏñ¿í¶È
height: ͼÏñ¸ß¶È
pix[ ]: Ä¿±êÊý×é
offset: Ä¿±êÊý×éµÄÆðʼµØÖ·
scansize: ͼÏñÿÐеãÊý
È»ºóʹÓÃgrabPixels( ) ·½·¨È¡Êý¾Ý:
try { pg.grabPixels( ) ; }
catch ( InterruptedException e) { }
µÚ¶þ¸ö¹Ø¼ü¼¼ÊõÊÇʹÓÃýÌå×·×ÙÆ÷MediaTracker¼àÊÓͼÏñµÄÉú³ÉÇé¿ö.Äã¿ÉÒÔÕâÑùʹÓÃ:
Ê×ÏÈÉú³ÉÒ»¸öýÌå×·×ÙÆ÷µÄʵÀý:
MediaTracker mt=new MediaTracker(this);
¡¡
È»ºóÏòÆäÖмÓÈëҪ׷×ÙµÄͼÏñ:
mt.addImage(Image image,int ID)
imageÊÇÄãҪ׷×ÙµÄͼÏñ, IDÊÇÄãÉ趨µÄÒ»¸ö±íʾÕâ¸öͼÏñµÄÐòºÅ.
È»ºóʹÓÃwaitForID ( int ID ) »ò waitForAll( ) µÈ´ýͼÏñÈ«²¿Éú³É
try { mt.waitForID(1);}
catch(InterruptedException e){ }
µÚÈý¸ö¹Ø¼ü¼¼ÊõÊÇʹÓÃÄÚ´æÊý¾Ý(Êý×é)²úÉúͼÏñ.Äã¿ÉÒÔÕâÑùʹÓÃ:
createImage(new MemoryImageSource(int width, int height, int pix[ ], int offset, int scanwidth)
width: ÓûÉú³ÉµÄͼÏñµÄ¿í¶È
heidth: ÓûÉú³ÉµÄͼÏñµÄ¸ß¶È
pix[ ]: Êý¾ÝÔ´
offset: ´ÔÊý×éµÄÄÄÀ↑ʼʹÓÃÊý¾Ý
scanwidth: ͼÏñÿÐеÄÏóËØÊý
³ÌÐòÈçÏÂ:
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
public class picture_window extends Applet
{
Image img_full,img_window;//img_fullÊÇÔͼÏñ, img_windowÊÇ´ÓÔͼÏñÖвüôµÄÒªÔÚ´°¿ÚÖÐÏÔʾµÄͼÏñ
int img_width,img_height;//ÔʼͼÏñµÄ¿íºÍ¸ß
int window_width=150,window_height=150;//´°¿ÚµÄ¿íºÍ¸ß
int window_x=30,window_y=30;//´°¿ÚµÄ×óÉϽÇ×ø±ê
int point_img_full,point_img_window;//ÔʼͼÏñÊý¾ÝÊý×éµÄ²Ù×÷µØÖ·ºÍ´°¿ÚͼÏñÊý¾ÝÊý×éµÄ²Ù×÷µØÖ·
int img_full_data[];//ÔʼͼÏñÊý¾ÝÊý×é.ûÓгõʼ»¯ÊÇÒòΪÏÖÔÚ²»ÖªµÀÔʼͼÏñµÄ´óС
int img_window_data[]=new int[window_width * window_height];//´°¿ÚͼÏñÊý¾ÝÊý×é
MediaTracker mt=new MediaTracker(this);//ýÌå×·×ÙÆ÷
PixelGrabber img_full_grabber;//ÓÃÀ´»ñÈ¡ÔʼͼÏñµÄÊý¾Ý
public void init()
{
img_window=createImage(window_width,window_height);//´´½¨´°¿ÚͼÏñ
img_full=getImage(getCodeBase(),"mama.gif");
//ÏÂÃæÒªµÈ´ýÖ±µ½È«²¿µÄÔʼͼÏñÊý¾Ý¶¼±»ÕýÈ·ÔØÈë.·ñÔòÎÞ·¨ÖªµÀÔʼͼÏñµÄ´óС
mt.addImage(img_full,1);//ÏòýÌå×·×ÙÆäÖмÓÈëҪ׷×ÙµÄͼÏñ
try{mt.waitForID(1);} // µÈ´ýÈ«²¿Êý¾Ý±»ÕýÈ·ÔØÈë
catch(InterruptedException e){ }
img_width=img_full.getWidth(this);//ÏÖÔÚ¿ÉÒÔ»ñÈ¡ÔʼͼÏñµÄÕýÈ·ÐÅÏ¢ÁË.È¡ËüµÄ¿íºÍ¸ß
img_height=img_full.getHeight(this);
img_full_data=new int[img_width * img_height];//³õʼ»¯ÔʼͼÏñÊý¾ÝÊý×é
img_full_grabber=new PixelGrabber(img_full,0,0,img_width,img_height,img_full_data,0,img_width);//×¼±¸»ñȡͼÏñÊý¾Ý
try{img_full_grabber.grabPixels();}//²É¼¯Êý¾Ý
catch(InterruptedException e){ }
get_img_window_data();//Éú³É´°¿ÚͼÏñ
}
public void paint(Graphics g)
{
g.drawImage(img_window,0,0,this);
}
public void get_img_window_data()
{
point_img_full=window_y * img_width+window_x;//´ÓÕâ¸öλÖÿªÊ¼»ñÈ¡ÔʼͼÏñÊý¾Ý
point_img_window=0;//´ÓÕâ¸öλÖÿªÊ¼Ïò´°¿ÚͼÏñÊý¾ÝÊý×é·ÅÊý¾Ý
for(int i=0;i<window_height;i++)//ÖðÐд¦Àí
{
for(int j=0;j<window_width;j++)//ÖðÁд¦Àí
img_window_data[point_img_window++]=img_full_data[point_img_full++];//È¡ºÍ´æ
¡¡
point_img_full=point_img_full+img_width-window_width;//¿ªÊ¼´¦ÀíÏÂÒ»ÐÐ
}
img_window=createImage(new MemoryImageSource(window_width,window_height,img_window_data,0,window_width));//¸ù¾ÝÄÚ´æÊý¾Ý(Êý×é)Éú³ÉͼÏñ
//µÈ´ýͼÏñÍêÈ«Éú³É.·ñÔòÒ»±ßÉú³ÉÒ»±ß»æÖÆ´°¿ÚͼÏñ»áÉÁ˸.
mt.addImage(img_window,1);
try{mt.waitForID(1);}
catch(InterruptedException e){}
}
//ÏÂÃæµÄ¼üÅÌʼþ·½·¨¸ù¾ÝÓû§µÄ°´¼üÖØÖô°¿Ú×ø±ê,ÔÙÉú³ÉͼÏñ,ÔÙÏÔʾ
public boolean keyDown(Event e,int key)
{
switch(key)
{
case(Event.UP):
if(window_y>0)
window_y-=1;
break;
case(Event.DOWN):
if(window_y<(img_height-window_height))
window_y+=1;
break;
case(Event.RIGHT):
if(window_x<(img_width-window_width))
window_x+=1;
break;
case(Event.LEFT):
if(window_x>0)
window_x-=1;
break;
default:
break;
}
showStatus(String.valueOf(window_x)+" , "+String.valueOf(window_y));
get_img_window_data();
getGraphics().drawImage(img_window,0,0,this);
return true;
}
}
HTMLÎļþÈçÏÂ:
<APPLET CODE="picture_window.class"WIDTH=150 HEIGHT=150></APPLET>
¡¡
ÏÂÃæµÄ³ÌÐò¶ÔÁ½¸öͼÏñ½øÐкϳɲ¢ÏÔʾÀ´Ä£ÄâͼÏñµÄµÈëµ³ö.³ÌÐòÔËÐкó,ÿ°´Ò»´ÎÏòÉϼü,ǰ¾°Í¼Ïñ¾ÍÔöǿһµã,ÿ°´Ò»´ÎÏòϼü,ǰ¾°Í¼Ïñ¾Í¼õÈõÒ»µã.
Ê×ÏÈÄãÒªÁ˽âͼÏñÊý¾Ý.
ÿ¸öÏóËØµãµÄÐÅÏ¢ÓÉÒ»¸öÕûÊý±í´ï.ÕûÊý¹²32¸ö¶þ½øÖÆÎ»,´Ó×óÏòÓÒ,·Ö³ÉËĸö²¿·Ö,ÿ²¿·Ö¶¼ÊÇ8λ.
µÚÒ»²¿·Ö: Alpha ÐÅÏ¢.¿ØÖÆÍ¼ÏñÏÔʾµÄÇ¿¶È.ÏÂÃæµÄ³ÌÐò¾ÍÊÇͨ¹ýµ÷ÕûÕâ¸öÊýÖµ¿ØÖÆÍ¼ÏñµÄµÈëµ³ö.
µÚ¶þ²¿·Ö:ºìÉ«Êý¾Ý.
µÚÈý²¿·Ö:ÂÌÉ«Êý¾Ý.
µÚËIJ¿·Ö:À¶É«Êý¾Ý.
³ÌÐòʹÓõķ½·¨ÊÇ:ÏÈ»±³¾°Í¼Ïñ,ÔÙÔÚÉÏÃæ»´øAlphaÊý¾ÝµÄǰ¾°Í¼Ïñ,ͨ¹ýµ÷ÕûAlphaֵʹǰ¾°Í¼ÏñµÈë µ³ö.
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
public class alpha extends Applet
{
Image background, foreground;//±³¾°Í¼ÏñºÍǰ¾°Í¼Ïñ
Image foreground_new;//ÒÀ¾Ýǰ¾°Í¼ÏñÉú³ÉµÄ´øAlphaͨµÀµÄÐÂͼÏñ
MediaTracker mt;
int foreground_alpha=175;//ǰ¾°Í¼ÏñµÄÆðʼAlphaÖµ
int foreground_data[];//ÓÃÀ´Éú³ÉÐÂͼÏñµÄÄÚ´æÊý¾Ý
PixelGrabber pg;
int transparancy;//ǰ¾°Í¼ÏñµÄȫ͸Ã÷µãµÄÏñËØÖµ.ֻҪǰ¾°Í¼ÏñµÄij¸öµãÊÇÕâ¸öÖµ,Ëü¾Íȫ͸Ã÷
public void init()
{
background=getImage(getCodeBase(),"mama.gif");
foreground=getImage(getCodeBase(),"baba.gif");
mt=new MediaTracker(this);
mt.addImage(background,1);
mt.addImage(foreground,2);
try{mt.waitForAll();} // µÈ´ýËùÓÐͼƬµÄÊý¾Ý¶¼±»ÕýÈ·ÔØÈë
catch(InterruptedException e){ }
foreground_data=new int[foreground.getWidth(this) * foreground.getHeight(this)];//³õʼ»¯
//ÏÂÃæ°Ñǰ¾°Í¼Æ¬µÄÊý¾ÝÔØÈëÊý×é
pg=new PixelGrabber(foreground,0,0,foreground.getWidth(this),foreground.getHeight(this),foreground_data,0,foreground.getWidth(this));
try{pg.grabPixels();}
catch(InterruptedException e){ }
for (int i=0;i<(foreground.getWidth(this) * foreground.getHeight(this));i++)
foreground_data[i]=foreground_data[i]&0x00ffffff;//°ÑËùÓеÄÏóËØµÄAlphaÖµÖÃΪ0
//ÏÂÃæÎÒ°ÑͼÏñ×óÉϽǵĵãµÄÖµ×÷Ϊ͸Ã÷Öµ.¼ÙÈçͼÏñÖÐÄĸöµãµÄÖµºÍ×óÉϽǵĵãµÄÖµÒ»Ñù,
//Õâ¸öµã¾Íȫ͸Ã÷--±³¾°100%³öÏÖ.ÎÒÓÃÕâ¸ö±È½Ï¼òµ¥µÄ°ì·¨°Ñǰ¾°Í¼ÏñÖÐÎÒ²»ÏëÒªµÄ²¿·ÖÈ¥µô
transparancy=foreground_data[0];
}
public void paint(Graphics g)
{
g.drawImage(background,0,0,this);
}
public boolean keyDown(Event e, int key)
{
if (key==Event.UP && foreground_alpha<255)//ÒÀ¾Ý°´¼ü¸Ä±äAlphaÖµ
foreground_alpha++;
if (key==Event.DOWN && foreground_alpha>0)
foreground_alpha--;
showStatus(String.valueOf(foreground_alpha));//ÔÚ״̬À¸ÏÔʾAlphaÖµ
for (int i=0;i<(foreground.getWidth(this) * foreground.getHeight(this));i++)//Öðµã´¦Àí
{
foreground_data[i]=foreground_data[i] & 0x00ffffff;//Öô˵ãΪȫ͸Ã÷
if (foreground_data[i]!=transparancy)//¼ÙÈçÕâ¸öµãµÄÖµºÍȫ͸Ã÷µã²»Í¬
foreground_data[i]=foreground_data[i] | (foreground_alpha<<24);//¸øËüAlphaÖµ
}
foreground_new=createImage(new MemoryImageSource(foreground.getWidth(this),foreground.getHeight(this),foreground_data,0,foreground.getWidth(this)));//Éú³Éǰ¾°Í¼Ïó
mt.addImage(foreground_new,3);
try{mt.waitForID(3);}
catch(InterruptedException e2){ }
getGraphics().drawImage(background,0,0,this);//ÏÈ»±³¾°
getGraphics().drawImage(foreground_new,100,100,this);//Ôٻǰ¾°
return true;
}
}
ÏÂÃæÊÇHTMLÎļþ:
<APPLET CODE="alpha.class"WIDTH=300 HEIGHT=300></APPLET>
¡¡
5 07, 2007
ͼƬµÄÔ¤ÏȶÁÈ¡-¼Ó¿ìÏÂÔØËÙ¶È(ת)
ΪʲôҪ¶ÔͼƬ½øÐÐÔ¤Ïȵĵ÷Ó㿴𰸷dz£¼òµ¥£ºÎªÁËËÙ¶È¡£
ÄãÊÇ·ñÒѾעÒâµ½ÁË£¬Ò»¸öÒÔÇ°Ôø¾·ÃÎʹýµÄÒ³ÃæÔٴνøÈëʱËÙ¶È»á±ÈÒÔǰ¿ìÐí¶à£¿ÕâÊÇÒòÎªÒ³ÃæÖÐËùÓеÄͼƬ¶¼ÒѾ±»¡°cached¡±ÁË¡£
¶ÔÓÚIE£¬ÔÚwindowsĿ¼ÏµÄTemporary Internet FilesµÄ×ÓĿ¼ÄÚ£¬¶ÔÓÚ NetscapeÔòÊÇÔÚÒ»¸ö½Ð×öcacheµÄ×ÓĿ¼ÖУ¬±£´æÕâÄãÔø¾ä¯ÀÀ¹ýµÄÒ»Ð©Ò³ÃæµÄHTMLÎĵµºÍͼƬ¡£µ±ÄãµÚÒ»´Îä¯ÀÀÒ³ÃæÊ±ÕâЩ×ÊÁÏдÈëcacheÒÔ±¸½ñºóµÄÐèÒª¡£ÏÂÒ»´ÎÔÙ¹âÁÙʱ£¬ÔòÖ±½Ó´ÓÓ²Å̵ÄcacheÖжÁÈ¡×ÊÁÏ£¬Ëٶȵ±È»¿ì¶àÁË¡£
ÏÂÃæµÄÄÚÈݾ͸újavascript³¶ÉϹØÏµÁË¡£
£¨1£©²¢·ÇËùÓеÄcache¶¼ÊÇÓÐÀûµÄ£¬ÒòΪÓÐʱºòÄãÐèҪƵ·±µØ¸üÐÂÒ³Ãæ£¬»òÕßÔÙÒ³ÃæÉÏ·ÅÖÃÁËһЩÖîÈç¼ÆÊýÆ÷Ö®ÀàµÄ¶¯Ì¬½Å±¾£¬ÄãÐèÒªä¯ÀÀʱ¼°Ê±¸üÐÂÕâЩ×ÊÁÏ£¬²¢·Ç´ÓcacheÖжÁÈ¡¾ÉµÄÊý¾Ý¡£ÄÇô£¬ÓÃÏÂÃæµÄ·½·¨¿ÉÒÔ½«Ò³ÃæcacheÆÁ±ÎÆðÀ´¡£
½«ÈçÏ´úÂë¼ÓÈëHTMLµÄ<head>Çø¼´¿É¡£
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
£¨2£©ÎªÁ˼ӿìÏÂÔØËÙ¶È£¬¿ÉÒÔ½«Ò»Ð©¿ÉÄÜҪʹÓõÄͼƬԤÏȶÁÈ¡³öÀ´£¬ÄÇôµ±Ê¹ÓõÄʱºò¾Í²»±ØÏÖÏÂÔØÁË¡£ÓÈÆäÊÇÖÆ×÷onmouseoverЧ¹û£¨ÀýÈ磺Êó±êÒÆ¶¯µ½Ò»¸ö°´Å¥ÉϲúÉú°´Ï»ò±äÉ«µÈЧ¹û£©Ê±£¬·ñÔò»áÓÐÃ÷ÏÔµÄÑÓ³Ù£¬Ð§¹û¾Í´ó´òÕÛ¿ÛÁË¡£
£¨3£©Ô¤ÏȶÁȡͼƬµÄ·½·¨ÊDZȽϼòµ¥µÄ£¬ÓÃjavascriptÕâÑùʵÏÖ¡£
½«ÈçϵÄÀàËÆ´úÂë·ÅÔÚHTMLµÄ<head>Çø£º
<SCRIPT LANGUAGE="JavaScript">
<!--
Image1= new Image(100,50)
Image1.src = "image1.gif"
Image2 = new Image(100,50)
Image2.src = "image2.gif"
Image3 = new Image(100,50)
Image3.src = "image3.gif"
// -->
</SCRIPT>
ÕâÑùä¯ÀÀÆ÷ÔÚ×°ÔØÒ³ÃæÊ±¾ÍÒѾԤÏÈÏÂÔØÁË3¸öͼƬ£¨image1.gif,images2.gifºÍimage3.gif£©¡£µ±¼¤·¢onmouseoverʼþʱ£¬ä¯ÀÀÆ÷Ö±½Ó´ÓCacheÖжÁȡͼƬ£¬Ëٶȵ±È»¿ì¶àÁË¡£
ÕâÀï×öһЩСС˵Ã÷£ºÍ¼Æ¬µÄÃû×Ö¿ÉÒÔÊÇÈÎÒâµÄ£¬100ºÍ50·Ö±ðÊǶÁÈëcacheµÄͼƬµÄ¿í¶ÈºÍ¸ß¶È¡£µ«Êǽű¾¸ñʽ±ØÐë°´Õչ涨µÄ¸ñʽд£¬"Image1=new Image"¡£Èç¹ûͼƬÔÚÆäËü·þÎñÆ÷µÄ×ÓĿ¼ÄÚ£¬Ö»ÒªÓÃÕýÈ·µÄ¾ø¶Ô·¾¶±íʾ¼´¿É¡£
½Å±¾¿ÉÒÔ·ÅÔÚHTMLµÄÈÎÒâλÖ㬵«Êǽ¨Òé·ÅÔÚ¿¿ÉϵÄλÖã¬ÔÚ<head>ÇøÊÇ×îºÃµÄ£¬ÒòΪËüÄܱ£Ö¤×îÏȱ»¶ÁÈ¡¡£
½«ÐèÒªÔ¤Ïȱ»¶ÁÈ¡µÄËùÓÐͼƬ¶¼¼ÓÈë´úÂëÖУ¬°´¸ñʽд¾Í¿ÉÒÔÁË¡£
5 07, 2007
´ÓÍøÂçÉÏ»ñÈ¡ÉùÒô(ת)
ǰÕßµÄʹÓøñʽÊÇ£º
String Audur = "½áµãURL";
try {
play(new URL(Audur));
} catch(Exception e){}
»ò
String Audur = "½áµãURL";
try {
play(new URL(Audur),ÉùÒôÎļþÃû);
} catch(Exception e){}
ºóÕßʹÓõĸñʽÊÇ£º
String Audur = "½áµãURL";
AudioClip loopClip;
try {
loopClip = getAudioClip(new URL(Audur));
}
catch(Exception e){
System.out.println("Can´t open the URL ");
}
»ò
String Audur = "½áµãURL";
AudioClip loopClip;
try {
loopClip = getAudioClip(new URL(Audur) ,ÉùÒôÎļþÃû);
}
catch(Exception e){
System.out.println("Can´t open the URL ");
}
ÉÏÃæµÄËÄÖÖ¸ñʽ¶¼Êǽ«Éú³ÉURL¶ÔÏ󲿷֣£¡°new URL(url)¡±
Ö±½Ó×÷Ϊplay»ògetAudioClipµÄ²ÎÊý£»ºÍÇ°Ãæ´¦ÀíͼÏóµÄÀý×ÓÒ»Ñù£¬
Ò²¿ÉÒÔÏÈÓá°new URL(url)¡±»ñȡһ¸öURL¶ÔÏó£¬ ÔÙ´«¸ø play »ò
getAudioClip¡£Èç¶ÔµÚÒ»ÖÖplay(URL)µÄ¸ñʽ£¬ Ò²¿É²ÉÓÃÈçϵıà
³Ì¸ñʽ£º
URL Audur =null;
try {
Audur=new URL("½áµãURL ");
} catch(Exception e){
System.out.println("Can´t open the URL ");
}
play(Audur);
ÏÂÃæ¶ÔǰÊöËÄÖÖ´ÓÍøÂçÉÏ»ñÈ¡²¢²¥·ÅÉùÒôÎļþµÄ¸ñʽ¸÷¾ÙÒ»¼òµ¥µÄÀý×Ó£¬
ÒÔ×÷±à³Ìʱ²Î¿¼£º
¡ñ³ÌÐò4 ¸ñʽһ
import java.applet.*;
import java.awt.*;
import java.net.*;
public class sound1 extends Applet
{ AudioClip loopClip;
public void paint(Graphics g) {
String Audur = "http://www.shu.edu.cn/~xyx/java/Animator/audio/bark.au";
try {
play(new URL(Audur));
} catch(Exception e){}
}
}
¡ñ³ÌÐò5 ¸ñʽ¶þ
import java.applet.*;
import java.awt.*;
import java.net.*;
public class sound2 extends Applet
{ AudioClip loopClip;
public void paint(Graphics g) {
String Audur = "http://www.shu.edu.cn/~xyx/java/Animator/audio/";
try {
play(new URL(Audur),"bark.au");
} catch(Exception e){}
}
}
¡ñ³ÌÐò6 ¸ñʽÈý
import java.applet.*;
import java.awt.*;
import java.net.*;
public class sound extends Applet{
AudioClip loopClip;
public void init() {
String Audur = "http://www.shu.edu.cn/~xyx/java/Animator/audio/bark.au";
try {
loopClip = getAudioClip(new URL(Audur));
} catch(Exception e){}
}
public void paint(Graphics g){
loopClip.loop();
}
}
¡ñ³ÌÐò7 ¸ñʽËÄ
import java.applet.*;
import java.awt.*;
import java.net.*;
public class sound0 extends Applet{
AudioClip loopClip;
URL auur;
public void init() {
try {
auur=new URL("http://www.shu.edu.cn/~xyx/java/Animator/audio/");
}
catch (MalformedURLException e) {
System.out.println("Can´t open the URL ");
}
loopClip = getAudioClip(auur,"bark.au");
}
public void paint(Graphics g){
loopClip.loop();
}
}¡¡
5 07, 2007
ͼÏñÓëÉùÒô(ת)
Java¶ÔͼÏñÓëÉùÒôýÌåµÄÖ§³ÖÕæ¿ÉνÊǼ¼¸ßÒ»³ï£¬ÏÔʾͼÏñÓë²¥·ÅÉùÒô¾ÍÈçͬÏÔʾһÐÐÎÄ
±¾Ò»Ñù·½±ã¡£Í¬Ê±£¬ÕýÓÉÓÚÔÚJava¶¯»ÖÐÁé»îµÄÔËÓÃͼÏñºÍÉùÒôýÌ壬²ÅʹµÃWebÒ³Ãæ¸ü
¾ß÷ÈÁ¦¡£
4.2.1 ͼÏñÎļþµÄÏÔʾ
ÕýÈçÉÏÒ»½ÚËù½éÉܵģ¬GraphicsÀàÖÐȷʵÌṩÁ˲»ÉÙ»æÖÆÍ¼Ðεķ½·¨£¬µ«Èç¹ûÓÃËüÃÇ
ÔÚappletÔËÐйý³ÌÖÐʵʱµØ»æÖÆÒ»·ù½Ï¸´ÔÓµÄͼÐΣ¨ÀýÈçÒ»Ìõ»îÆÃ¿É°®µÄС¹·£©£¬¾ÍºÃ±È
ÊÇÔÚÓø«Í·ºÍľ¿éÈ¥ÖÆÔ캽Ìì·É»ú¡£Òò´Ë£¬¶ÔÓÚ¸´ÔÓͼÐΣ¬´ó²¿·Ö¶¼ÊÂÏÈÓÃרÓõĻæÍ¼Èí
¼þ»æÖƺ㬻òÕßÊÇÓÃÆäËü½ØÈ¡Í¼ÏñµÄ¹¤¾ß£¨ÈçɨÃèÒÇ¡¢ÊÓЧ¿¨µÈ£©»ñȡͼÏñµÄÊý¾ÝÐÅÏ¢£¬
ÔÙ½«ËüÃǰ´Ò»¶¨µÄ¸ñʽ´æÈëͼÏñÎļþ¡£appletÔËÐÐʱ£¬Ö»ÒªÕÒµ½Í¼ÏñÎļþ´æÖüµÄλÖ㬽«
Ëü×°ÔØµ½ÄÚ´æÀȻºóÔÚÊʵ±µÄʱ»ú½«ËüÏÔʾÔÚÆÁÄ»ÉϾͿÉÒÔÁË¡£
1. ͼÏñÎļþµÄ×°ÔØ
JavaĿǰËùÖ§³ÖµÄͼÏñÎļþ¸ñʽֻÓÐÁ½ÖÖ£¬ËüÃÇ·Ö±ðÊÇGIFºÍJPEG¸ñʽ£¨´øÓÐ.GIF¡¢
.JPG¡¢.JPEGºó׺ÃûµÄÎļþ£©¡£Òò´ËÈôÊÇÆäËü¸ñʽµÄͼÏñÎļþ£¬¾ÍÏÈÒª½«ËüÃÇת»»ÎªÕâÁ½
ÖÖ¸ñʽ¡£ÄÜת»»Í¼Ïñ¸ñʽµÄÈí¼þÓкܶ࣬ÈçPhotoStylerµÈ¡£
AppletÀàÖÐÌṩÁËgetImage( )·½·¨ÓÃÀ´½«×¼±¸ºÃµÄͼÏñÎļþ×°ÔØµ½appletÖУ¬µ«ÎÒ
ÃDZØÐëÊ×ÏÈÖ¸Ã÷ͼÏñÎļþËù´æÖüµÄλÖá£ÓÉÓÚJavaÓïÑÔÊÇÃæÏòÍøÂçÓ¦Óõģ¬Òò´ËÎļþµÄ´æ
ÖüλÖò¢²»¾ÖÏÞÓÚ±¾µØ»úÆ÷µÄ´ÅÅÌĿ¼£¬¶ø´ó²¿·ÖÇé¿öÊÇÖ±½Ó´æÈ¡ÍøÂçÖÐWeb·þÎñÆ÷ÉϵÄ
ͼÏñÎļþ£¬Òò¶ø£¬Java²ÉÓÃURL£¨Universal Resource Location£¬Í³Ò»×ÊÔ´¶¨Î»Æ÷£©À´¶¨
λͼÏñÎļþµÄÍøÂçλÖá£Òò´Ë£¬JavaרÃÅÌṩÁËURLÀàÀ´¹ÜÀíURLÐÅÏ¢£¨¹ØÓÚ¸ÃÀàµÄÏêϸ½é
ÉܼûÏÂÒ»Õ£©¡£
±íʾһ¸öURLÐÅÏ¢¿É·ÖΪÁ½ÖÖÐÎʽ£º
Ò»ÖÖ³ÆÎª¾ø¶ÔURLÐÎʽ£¬ËüÖ¸Ã÷ÁËÍøÂç×ÊÔ´µÄȫ·¾¶Ãû¡£È磺
¾ø¶ÔURL£º¡°http://www.xyz.com/java/imgsample/images/m1.gif¡±
ÁíÒ»ÖÖ³ÆÎªÏà¶ÔURLÐÎʽ£¬·Ö±ðÓÉ»ù×¼URL£¨¼´base URL£©ÔÙ¼ÓÉÏÏà¶ÔÓÚ»ù×¼URLϵÄ
Ïà¶ÔURLÕâÁ½²¿·Ö×é³É£¬ÀýÈçÉÏÃæµÄÀý×ӿɱíʾΪ£º
»ù×¼URL£º¡°http://www.xyz.com/java/imgsample/¡±
Ïà¶ÔURL£º¡°images/m1.gif¡±
ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔÀ´¿´Ò»ÏÂgetImage( )·½·¨µÄµ÷ÓøñʽÁË£º
Image getImage(URL url)
Image getImage(URL url, String name)
ÎÒÃÇ¿ÉÒÔ·¢ÏÖ£¬ÕâÁ½ÖÖµ÷ÓøñʽµÄ·µ»ØÖµ¶¼ÊÇImage¶ÔÏó¡£È·Êµ£¬JavaÌØ±ðÌṩÁË
java.awt.ImageÀàÀ´¹ÜÀíÓëͼÏñÎļþÓйصÄÐÅÏ¢£¬Òò´ËÖ´ÐÐÓëͼÏñÎļþÓйصIJÙ×÷ʱ²»Òª
ÍüÁËimportÕâ¸öÀà¡£getImage( )·½·¨µÄµÚÒ»ÖÖµ÷ÓøñʽֻÐèÒ»¸öURL¶ÔÏó×÷Ϊ²ÎÊý£¬Õâ±ã
ÊǾø¶ÔURL¡£¶øºóÒ»ÖÖ¸ñʽÔò´øÓÐÁ½¸ö²ÎÊý£¬µÚÒ»¸ö²ÎÊý¸ø³öµÄURL¶ÔÏóÊÇ»ù×¼URL£¬µÚ¶þ
¸ö²ÎÊýÊÇ×Ö·û´®ÀàÐÍ£¬ËüÃèÊöÁËÏà¶ÔÓÚ»ù×¼URLϵķ¾¶ºÍÎļþÃûÐÅÏ¢£¬Òò´ËÕâÁ½¸ö²ÎÊý
µÄÄÚÈÝ×ÛºÏÔÚÒ»Æð¾Í¹¹³ÉÁËÒ»¸ö¾ø¶ÔURL¡£ÀýÈ磬ÏÂÃæÁ½ÖÖд·¨Ëù·µ»ØµÄ½á¹ûÊÇÒ»ÑùµÄ£º
Image img=getImage(new URL("http://www.xyz.com/java/imgsample/images/m1.gif");
Image img=getImage(new URL("http://www.xyz.com/java/imgsample/"),"images/m1.gif");
±íÃæ¿´À´£¬ºÃÏóµÚÒ»ÖÖµ÷Óøñʽ½Ï·½±ãһЩ£¬µ«Êµ¼ÊÉϵڶþÖÖµ÷ÓøñʽÓõøüÆÕ±é£¬
ÒòΪÕâÖÖ¸ñʽ¸ü¾ßÁé»îÐÔ¡£ÔÀ´£¬AppletÀàÖÐÌṩÁËÁ½¸ö·½·¨À´°ïÖúÎÒÃÇ·½±ãµØ»ñÈ¡»ù×¼
URL¶ÔÏó£¬ËüÃǵĵ÷ÓøñʽÈçÏ£º
URL getDocumentBase( )
URL getCodeBase( )
ÆäÖÐgetDocumentBase( )·½·¨·µ»ØµÄ»ù×¼URL¶ÔÏó´ú±íÁ˰üº¬¸ÃappletµÄHTMLÎļþËù
´¦µÄĿ¼£¬ÀýÈç¸ÃÎļþ´æÖüÔÚ"http://www.xyz.com/java/imgsample/m1.html"ÖУ¬Ôò¸Ã
·½·¨¾Í·µ»Ø"http://www.xyz.com/java/imgsample/"·¾¶¡£¶øgetCodeBase( )·½·¨·µ»ØµÄ
»ù×¼URL¶ÔÏó´ú±íÁ˸ÃappletÎļþ(.classÎļþ)Ëù´¦µÄĿ¼¡£ËüÊǸù¾ÝHTMLÎļþµÄ"APPLET"
±ê¼ÇÖеÄCODEBASEÊôÐÔÖµ¼ÆËã³öÀ´µÄ£¬Èô¸ÃÊôÐÔûÓÐÉèÖã¬ÔòͬÑù·µ»Ø¸ÃHTMLÎļþËù´¦µÄ
Ŀ¼¡£
ºÃÁË£¬ÏÖÔÚÎÒÃÇÓ¦¸Ã¿ÉÒÔ¸ÐÊܵ½»ù×¼URLµÄÁé»îÐÔÁ˰ɡ£Ö»ÒªÎÒÃÇдÏÂÓï¾ä£º
Image img = getImage(getDocumentBase( ),"images/m1.gif");
ÄÇô¼´Ê¹Õû¸öimgsampleÄ¿Â¼ÒÆµ½±ð´¦Èκεط½£¬Ò²¿ÉÒÔÕýÈ·×°ÔØÍ¼ÏñÎļþ£¬¶ø²ÉÓÃ
¶ÔÓÚ¾ø¶ÔURLÐÎʽÔòÐèÒªÖØÐÂÐÞ¸Äapplet´úÂë²¢ÖØÐ±àÒë¡£
2. ͼÏñÎļþµÄÏÔʾ
getImage( )·½·¨½ö½öÊǽ«Í¼ÏñÎļþ´ÓÍøÂçÉÏ×°ÔØ½øÀ´£¬½»ÓÉImage¶ÔÏó¹ÜÀí¡£ÄÇÎÒÃÇ
ÔõÑù°ÑµÃµ½µÄImage¶ÔÏóÖеÄͼÏñÏÔʾÔÚÆÁÄ»ÉÏÄØ£¿ÕâÓÖÒª»Øµ½ÎÒÃǵÄÀÏÅóÓÑGraphicsÀà
ÖÐÀ´ÁË£¬ÒòΪGraphicsÀàÌṩÁËÒ»¸ödrawImage( )·½·¨£¬ËüÄÜÍê³É½«Image¶ÔÏóÖеÄͼÏñ
ÏÔʾÔÚÆÁÄ»µÄÌØ¶¨Î»ÖÃÉÏ£¬¾ÍÏóÏÔʾÎı¾Ò»Ñù·½±ã¡£drawImage( )·½·¨µÄµ÷ÓøñʽÈçÏ£º
boolean drawImage(Image img, int x, int y, ImageObserver observer)
ÆäÖÐimg²ÎÊý¾ÍÊÇÒªÏÔʾµÄImage¶ÔÏó¡£xºÍy²ÎÊýÊǸÃͼÏñ×óÉϽǵÄ×ø±êÖµ¡£observer
²ÎÊýÔòÊÇÒ»¸öImageObserver½Ó¿Ú£¨interface£©£¬ËüÓÃÀ´¸ú×ÙͼÏñÎļþ×°ÔØÊÇ·ñÒѾÍê³É
µÄÇé¿ö£¬Í¨³£ÎÒÃǶ¼½«¸Ã²ÎÊýÖÃΪthis£¬¼´´«µÝ±¾¶ÔÏóµÄÒýÓÃȥʵÏÖÕâ¸ö½Ó¿Ú¡£
³ýÁ˽«Í¼ÏñÎļþÕÕÔÑùÊä³öÒÔÍ⣬drawImage( )·½·¨µÄÁíÍâÒ»ÖÖµ÷Óøñʽ»¹ÄÜÖ¸¶¨Í¼
ÏñÏÔʾµÄÇøÓò´óС£º
boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
ÕâÖÖ¸ñʽ±ÈµÚÒ»ÖÖ¸ñʽ¶àÁËÁ½¸ö²ÎÊýwidthºÍheight£¬¼´±íʾͼÏñÏÔʾµÄ¿í¶ÈºÍ¸ß¶È
¡£Èôʵ¼ÊͼÏñµÄ¿í¶ÈºÍ¸ß¶ÈÓëÕâÁ½¸ö²ÎÊýÖµ²»Ò»Ñùʱ£¬Javaϵͳ»á×Ô¶¯½«Ëü½øÐÐËõ·Å£¬ÒÔ
ÊʺÏÎÒÃÇËù¶¨µÄ¾ØÐÎÇøÓò¡£
ÓÐʱ£¬ÎÒÃÇΪÁ˲»Ê¹Í¼ÏñÒòËõ·Å¶ø±äÐÎÊ§Õæ£¬¿ÉÒÔ½«ÔͼµÄ¿íºÍ¸ß¾ù°´ÏàͬµÄ±ÈÀý½ø
ÐÐËõС»ò·Å´ó¡£ÄÇôÔõÑùÖªµÀÔͼµÄ´óÐ¡ÄØ£¿Ö»Ðèµ÷ÓÃImageÀàÖеÄÁ½¸ö·½·¨¾Í¿ÉÒÔ·Ö±ð
µÃµ½ÔͼµÄ¿í¶ÈºÍ¸ß¶È¡£ËüÃǵĵ÷ÓøñʽÈçÏ£º
int getWidth(ImageObserver observer)
int getHeight(ImageObserver observer)
ͬdrawImage( )·½·¨Ò»Ñù£¬ÎÒÃÇͨ³£ÓÃthis×÷ΪobserverµÄ²ÎÊýÖµ¡£
ÏÂÃæµÄ³ÌÐò¶Î¸ø³öÁËÒ»¸öÏÔʾͼÏñÎļþµÄÀý×Ó£¬ÆäÏÔʾ½á¹ûÈçͼ4£14Ëùʾ¡£
import java.awt.Graphics;
import java.awt.Image;
public class Images extends java.applet.Applet{
Image img;
public void init(){
img=getImage(getCodeBase(),"man.gif");
}
public void paint(Graphics g){
int w=img.getWidth(this);
int h=img.getHeight(this);
g.drawImage(img,20,10,this); //Ôͼ
g.drawImage(img,200,10,w/2,h/2,this); //ËõСһ°ë
g.drawImage(img,20,200,w*2,h/3,this); //¿í±âͼ
g.drawImage(img,350,10,w/2,h*2,this); //Êݸßͼ
}
}
¡¡
ͼ4£14 ÏÔʾͼÏñÎļþ
4.2.2 ÉùÒôÎļþµÄ²¥·Å
¶ÔÉùÒôýÌåµÄÖ±½ÓÖ§³Ö¿ÉÒÔ˵ÊÇJavaµÄÒ»´óÌØÉ«£¬ÓÈÆäÊÇÔÚ¶¯»ÖÐÅäÉÏÉùÒôЧ¹û£¬¾Í
¿ÉÒÔʹÈËÔÚÊÓ¾õÉϺÍÌý¾õÉϾùµÃµ½ÃÀµÄÏíÊÜ£¬ÄDzŽйýñ«¡£JavaÖв¥·ÅÉùÒôÎļþÓëÏÔʾͼ
ÏñÎļþÒ»Ñù·½±ã£¬Í¬ÑùÖ»ÐèÒªÏȽ«ÉùÒôÎļþ×°ÔØ½øÀ´£¬È»ºó²¥·Å¾ÍÐÐÁË¡£
JavaĿǰ֧³ÖµÄÉùÒôÎļþÖ»ÓÐÒ»ÖÖ¸ñʽ£¬ÄǾÍÊÇSUN¹«Ë¾µÄAU¸ñʽ£¨.AUÎļþ£©£¬Ò²³Æ
Ϊu-law¸ñʽ¡£ÓÉÓÚAU¸ñʽµÄÉùÒô½öÓÐ8KHzµÄ²ÉÑùƵÂÊÇÒ²»Ö§³ÖÁ¢ÌåÉùЧ¹û£¬ËùÒÔÒôÖʲ»
ËãÌ«ºÃ¡£Î¨Ò»µÄºÃ´¦¾ÍÊÇAUÉùÒôÎļþµÄ³ß´ç±ÈÆäËü¸ñʽС£¬ÓÐÀûÓÚÍøÉÏ´«Êä¡£Ò»°ã£¬ÎÒÃÇ
½ÏÊìϤµÄ´ó¶¼ÊÇWAV¸ñʽµÄÉùÒôÎļþ£¬Òò´Ë±ØÐëÏȽ«ËüÃÇת»»ÎªAU¸ñʽ(¿ÉÒÔÑ¡ÓÃGoldwave
Èí¼þÀ´½øÐÐÕâÖÖ¸ñʽת»»)¡£
ÉùÒôÎļþ×¼±¸ºÃÒԺ󣬾ͿÉÒÔ¿¼Âǽ«Ëü×°ÔØ½øÀ´²¢²¥·Å¡£ÔÚAppletÀàÖÐÌṩµÄplay( )
·½·¨¿ÉÒÔ½«ÉùÒôÎļþµÄ×°ÔØÓë²¥·ÅÒ»²¢Íê³É£¬Æäµ÷ÓøñʽÈçÏ£º
void play(URL url)
void play(URL url, String name)
¿É¼û£¬play( )·½·¨µÄµ÷ÓøñʽÓëgetImage( )·½·¨ÊÇÍêȫһÑùµÄ£¬Ò²²ÉÓÃURLÀ´¶¨Î»
ÉùÒôÎļþ¡£ÀýÈ磬ijÉùÒôÎļþaudio.auÓëappletÎļþ´æ·ÅÔÚͬһĿ¼Ï£¬¿ÉÒÔÕâÑùд£º
play(getCodeBase( ),"audio.au");
Ò»µ©play( )·½·¨×°ÔØÁ˸ÃÉùÒôÎļþ£¬¾ÍÁ¢¼´²¥·Å¡£Èç¹ûÕÒ²»µ½Ö¸¶¨URLϵÄÉùÒôÎļþ
£¬play( )·½·¨²»·µ»Ø³ö´íÐÅÏ¢£¬Ö»ÊÇÌý²»µ½ÏëÌýµÄÉùÒô¶øÒÑ¡£
ÓÉÓÚplay( )·½·¨Ö»Äܽ«ÉùÒô²¥·ÅÒ»±é£¬ÈôÏëÑ»·²¥·ÅijÉùÒô×÷Ϊ±³¾°ÒôÀÖ£¬¾ÍÐèÒª
Óõ½¹¦ÄܸüÇ¿´óµÄAudioClipÀ࣬ËüÄܸüÓÐЧµØ¹ÜÀíÉùÒôµÄ²¥·Å²Ù×÷¡£ÒòΪËü±»¶¨ÒåÔÚ
java.applet³ÌÐò°üÖУ¬ËùÒÔʹÓøÃÀàµÄ»°£¬²»ÒªÍüÁËÔÚ³ÌÐòÍ·²¿¼ÓÉÏ£º
import java.applet.AudioClip;
ΪÁ˵õ½AudioClip¶ÔÏó£¬ÎÒÃÇ¿ÉÒÔµ÷ÓÃAppletÀàÖеÄgetAudioClip( )·½·¨¡£ËüÄÜ×°
ÔØÖ¸¶¨URLµÄÉùÒôÎļþ£¬²¢·µ»ØÒ»¸öAudioClip¶ÔÏ󣬯äµ÷ÓøñʽÈçÏ£º
AudioClip getAudioClip(URL url)
AudioClip getAudioClip(URL url, String name)
µÃµ½AudioClip¶ÔÏóÒԺ󣬾ͿÉÒÔµ÷ÓÃAudioClipÀàÖÐËùÌṩµÄ¸÷ÖÖ·½·¨À´²Ù×÷ÆäÖеÄ
ÉùÒôÊý¾Ý£¬ÕâЩ·½·¨Èç±í4£4Ëùʾ¡£
Èç¹ûgetAudioClip( )·½·¨Ã»ÓÐÕÒµ½ËùÖ¸¶¨µÄÉùÒôÎļþ£¬¾Í»á·µ»ØnullÖµ¡£ËùÒÔ£¬ÔÚ
µ÷Óñí4£4ÖÐËùÁеķ½·¨Ç°£¬Ó¦¸ÃÏȼì²éһϵõ½µÄAudioClip¶ÔÏó²»ÊÇnull£¬ÒòΪÔÚnull
¶ÔÏóÉϵ÷ÓÃÉÏÊö·½·¨½«µ¼Ö³ö´í¡£
Èç¹ûÐèÒªµÄ»°£¬ÎÒÃÇ»¹¿ÉÒÔÔÚappletÖÐÍ¬Ê±×°ÔØ¼¸¸öÉùÒôÎļþÀ´Ò»Æð²¥·Å£¬µ½Ê±ºò£¬
ÕâЩÉùÒô½«»ìºÏÔÚÒ»Æð£¬¾ÍÏó¶þÖØ×àÒ»Ñù¡£ÁíÍ⻹ÓÐÒ»µãҪ˵Ã÷µÄÊÇ£¬Èç¹ûÎÒÃÇʹÓÃ
AudioClip¶ÔÏóµÄloop( )·½·¨À´Öظ´²¥·Å±³¾°ÒôÀÖʱ£¬Ç§Íò²»ÒªÍü¼ÇÔÚÊʵ±µÄʱºòµ÷ÓÃ
AudioClip¶ÔÏóµÄstop( )·½·¨À´½áÊø·ÅÒô£¬·ñÔòµÄ»°£¬¼´Ê¹Óû§À뿪ÕâÒ»WebÒ³Ãæ£¬¸ÃÉù
ÒôÒ²²»»áÍ£Ö¹£¬ÕâÎÞÒɽ«»áÈÇÄÕÓû§¡£Òò´Ë£¬Ò»°ãÎÒÃǶ¼ÔÚappletµÄstop( )·½·¨ÖÐÌíÉÏ
Í£Ö¹²¥·ÅµÄ´úÂë¡£
ÀýÈ磬ÏÂÃæÕâ¶Î³ÌÐò½«²¥·ÅÁ½¶ÎÉùÒô£¬Ò»¶ÎÊÇÁ¬Ðø²¥·ÅµÄ±³¾°ÒôÀÖ£¬ÁíÒ»¶ÎÊǽ²»°Â¼
Òô¡£
import java.applet.AudioClip;
public class Audios extends java.applet.Applet{
AudioClip bgmusic,speak;
public void init(){
bgmusic=getAudioClip(getDocumentBase(),"space.au");
speak=getAudioClip(getDocumentBase(),"intro.au");
}
public void start(){
if(bgmusic!=null)
bgmusic.loop();
if(speak!=null)
speak.play();
}
public void stop(){
if(bgmusic!=null)
bgmusic.stop(); //¹Ø±Õ±³¾°ÒôÀÖ£¬Çмǡ£
}
}
¡¡
5 07, 2007
JAVAÉùÒô¼¼Êõ(ת)
¡¡¡¡ÔÚJAVA2ƽ̨³öÏÖ֮ǰ£¬JAVAÓïÑÔÖ»ÄÜ´¦Àíµç»°ÒôÖʵÄÉùÒô£¬ÒÔµ¥ÉùµÀ8KHZµÄ²ÉÑùƵÂʴ洢Ϊ¦Ì-law AUÎļþ¡£JAVA2ƽ̨Ôö¼ÓÁ˶ÔAIFF£¬WAVÒÔ¼°ÈýÖÖMIDIÎļþÀàÐ͵ÄÖ§³Ö¡£ËùÖ§³ÖµÄÈýÖÖMIDIÎļþ¸ñʽΪMIDIÎļþÀàÐÍ0¡¢MIDIÎļþÀàÐÍ1¡¢ÒÔ¼°RMF¡£
¡¡¡¡Ó¦ÓóÌÐò½Ó¿ÚAPI1.0°æÌṩÁËÒ»¸öÒ×ÓÚʹÓõŤ¾ß¼¯£¬Ê¹³ÌÐòÔ±¿ÉÒÔ·ÃÎʵײãµÄºÏ³ÉÓëÑÝ×àÒýÇæ£¬´Ó¶øÀ©Õ¹ÁËJAVAÉùÒôµÄÓ¦Óá£ÆäÖÐÁ½¸öÖØÒªµÄÁìÓòÊÇ´´½¨Êý×Ö»¯ÒôƵÒÔ¼°ÀÖÆ÷Ö¸ÁîÊý×Ö»¯½Ó¿ÚMIDI¡£ÓÉÓÚÌṩÁË´óÁ¿µÄµ×²ãÖ§³Ö¹¦ÄÜ£¬ËùÒÔ³ÌÐòÔ±ÄÜÊäÈëÊä³öÉùÒô£¬¿ØÖÆMIDIÉ豸£¬²¢ÄܲéѯϵͳÔË×÷Çé¿ö¡£
¡¡¡¡ÉùÒôÎļþÀàÐͼò½é
¡¡¡¡Ö÷ÒªµÄÉùÒôÎļþÀàÐÍÈçÏ£º
¡¡¡¡AU - (À©Õ¹ÃûΪAU»òSND)ÊÊÓÃÓڶ̵ÄÉùÒôÎļþ£¬ÎªSolarisºÍÏÂÒ»´ú»úÆ÷µÄͨÓÃÎļþ¸ñʽ£¬Ò²ÊÇJAVAƽ̨µÄ±ê×¼µÄÒôƵ¸ñʽ¡£AUÀàÐÍÎļþʹÓõÄÈýÖÖµäÐÍÒôƵ¸ñʽΪ: 8λ¦Ì-lawÀàÐÍ£¨Í¨³£²ÉÑùƵÂÊΪ8kHz), 8λÏßÐÔÀàÐÍ£¬ÒÔ¼°16λÏßÐÔÀàÐÍ¡£
¡¡¡¡WAV - (À©Õ¹ÃûΪWAV)ÓÉ MicrosoftºÍ IBM¹²Í¬¿ª·¢,¶ÔWAVµÄÖ§³ÖÒѾ±»¼Ó½øWindows 95²¢ÇÒ±»ÑÓÉìµ½Windows 98. WAVÎļþÄÜ´æ´¢¸÷ÖÖ¸ñʽ°üÀ¨¦Ì-law,a-lawºÍ PCM (ÏßÐÔ)Êý¾Ý¡£ËûÃǼ¸ºõÄܱ»ËùÓÐÖ§³ÖÉùÒôµÄWindowsÓ¦ÓóÌÐò²¥·Å¡£
¡¡¡¡AIFF - (À©Õ¹ÃûΪAIF»òIEF)ÒôƵ»¥»»Îļþ¸ñʽÊÇΪMacintosh¼ÆËã»úºÍSilicon Graphics (SGI)¼ÆËã»úËù¹²Óõıê×¼ÒôƵÎļþ¸ñʽ¡£AIFFºÍ AIFF-C¼¸ºõÊÇÏàͬµÄ,³ýÁ˺óÕßÖ§³ÖÀýÈç¦Ì-lawºÍ IMA ADPCMÀàÐ͵ÄѹËõ¡£
¡¡¡¡MIDI - (À©Õ¹ÃûΪMID)ÀÖÆ÷Êý×Ö½Ó¿ÚMIDIÊÇΪÒôÀÖÖÆÔìÒµËùÈϿɵıê×¼£¬Ö÷ÒªÓÃÓÚ¿ØÖÆÖîÈçºÏ³ÉÆ÷ºÍÉù¿¨Ö®ÀàµÄÉ豸¡£
¡¡¡¡MIDIÎļþ²»°üº¬Êý×ÖÒôƵ²ÉÑù£¬¶øÊǰüÀ¨Ò»ÏµÁÐÖ¸ÁÕâЩָÁî¿ØÖÆ°ÑÀ´×Ô²»Í¬ÀÖÆ÷ÉϵÄÒô·ûÐòÁкϳÉÀÖÇú¡£Ò»Ð©MIDIÎļþ°üº¬¸½¼ÓÖ¸ÁîÀ´Îª¸÷ÖֺϳÉÉèÖýøÐбà³Ì¡£
¡¡¡¡´ó¶àÊýºÏ³ÉÆ÷Ö§³ÖMIDI±ê×¼£¬ËùÒÔÔÚÒ»¸öºÏ³ÉÆ÷ÉÏÖÆ×÷µÄÒôÀÖÄܹ»ÔÚÁíÒ»¸öÉϲ¥·Å¡£ ÓÐ MIDI½Ó¿ÚµÄ¼ÆËã»úÄܲÙ×Ý MIDIÊý¾ÝÒÔ²úÉúÐÂÒôÀÖ»òÒôÏìЧ¹û¡£ÀýÈ磬һ¸öÍêÕûµÄÒôÀÖ×÷Æ·¿ÉÒÔͨ¹ýÒ»¸öÈí¼þÇý¶¯µÄÃüÁîת»»³ÉȫеÄÐÎʽ¡£
¡¡¡¡JAVAÉùÒôÒýÇæÖ§³ÖÁ½ÖÖMIDIÎļþÀàÐÍ£º
¡¡¡¡MIDIÀàÐÍ0Îļþ-°üº¬½ö½öÒ»¸öÐòÁУ¬ËùÓÐÏà¹ØµÄÀÖÆ÷²¿·Ö±»°üº¬ÔÚͬһ¸öÂß¼ "´ÅµÀ"ÉÏ¡£
¡¡¡¡MIDIÀàÐÍ1Îļþ-°üº¬¶àÖØµÄ "´ÅµÀ"ʹµÃ²»Í¬µÄÀÖÆ÷±»Âß¼µØ·Ö¿ª£¬´Ó¶øÊ¹¶ÔÉùÒôµÄ²Ù×÷ºÍÖØ×é¸ü¼ÓÈÝÒס£
¡¡¡¡RMF - (À©Õ¹ÃûΪRMF)»ìºÏÒôÀÖ¸ñʽÊÇÓÉBeatnikÉè¼Æ³öÀ´µÄ»ìºÏÎļþÀàÐÍ£¬Í¨¹ý½»»¥Ê½É趨½«MIDIºÍÒôƵ²ÉÑù·â×°ÔÚÒ»Æð¡£RMFºÃ±ÈÊÇÒ»¸öËùÓÐÒôÀÖÏà¹ØÎļþµÄÈÝÆ÷¡£RMFÒ²°üº¬¶ÔÓйذæÈ¨µÄÏêϸÎļþ˵Ã÷µÄÖ§³Ö¡£RMFÎļþ¿ÉÒÔ°üº¬¶à¸öÓɲ»Í¬ÒÕÊõ¼Ò´´×÷µÄ´æ´¢ÎªMIDIÀàÐÍ»òÒôƵ²ÉÑùÀàÐ͵Ä×÷Æ·,ÿ¸ö¶¼¹ØÁª×ÅÏà¹ØµÄ°æÈ¨ÐÅÏ¢¡£
¶ÔÉùÒôÒýÇæµÄÑ¡Ôñ
¡¡¡¡ÔÚ1997Äê,SUNµÄJAVAýÌ忪·¢×éÊÔͼÕÒµ½Ò»ÖÖ·½·¨£¬ÒÔÔöÇ¿ÉùÒôµÄ´¦ÀíÄÜÁ¦²¢Îª½«À´Ìṩһ¸ö¼áʵµÄƽ̨¡£¸ù¾ÝJAVAýÌ忪·¢×é¾ÀíMichael BundschuhËù˵,
"ÎÒÃÇÏëÒª·Ç³£¸ßÖÊÁ¿µÄ²¥·ÅÒýÇæÒÔ´¦ÀíËùÓеĴӰËλ¦Ì-law¼¶Ö±µ½ CDÖÊÁ¿ÉùÒôµÄÿһ¼þ²Ù×÷¡£ ÎÒÃÇÏ£ÍûÇáËÉ¿çÔ½ËùÓÐÆ½Ì¨£¬ÖîÈçSolarisƽ̨, Windows, MacÒÔ¼°ÆäËû¡£ÎÒÃÇÒ²ÏëÒª¸ß¶È·¢Õ¹Á˵ÄÄܹ»¿çÔ½²»Í¬Æ½Ì¨µÄMIDIÄÜÁ¦¡£ÎªÉÏÊöÄ¿µÄ£¬ºÏÀíµÄÑ¡ÔñÊÇBeatnikµÄÒôƵÒýÇæ(´ÓǰÊÇHeadspace¡£)"
SUNÈ¡µÃÁËBeatnikµÄÒôƵÒýÇæÊ¹ÓÃÐí¿É£¬°ÑËüµ±×÷JAVAÉùÒôÓ¦ÓóÌÐò½Ó¿ÚAPIµÄ»ù´¡¡£
¡¡¡¡Thomas Dolby Robertson-Beatnik¼ò½é
¡¡¡¡ÔÚ90Äê´ú³õ֮ǰ£¬Thomas Dolby RobertsonµÄÖ°ÒµÍêÈ«ÔÚÒôÀÖ·½Ãæ¡£Ëû1982ÍÆ³öµÄ"ËýÓÿÆÑ§ÕÕÁÁÁËÎÒ"ÊÇÒ»²¿ÔçÆÚµÄMTV¾Þ×÷¡£Õû¸ö80Äê´ú£¬Ëû¶¼ÔÚ²»¶ÏµØ×÷ÇúºÍ¼Òô£¬Ê¹ÓÃÒ»Öַǽṹ»¯ÒôÀÖÖÆ×÷Èí¼þ¡£µ«ÊÇÔÚ 1990,ͨ¹ýÒ»´ÎΪGuggenheim²©Îï¹ÝÑÝʾÐéÄâÏÖʵµÄºÏ×÷£¬Ëû¿ªÊ¼Ë¼¿¼ÄÜ·ñ×öһЩÌá¸ßÒôÀÖÖÆ×÷ÄÜÁ¦µÄ¹¤×÷¡£
¡¡¡¡"ÎÒµ±Ê±Õý·üÔÚ C³ÌÐòÔ±µÄ¼çÉÏ£¬²¢ÇÒÎÒͻȻÈÏʶµ½Îª×ö¼Ç¼×öÁË´óÁ¿µÄ¹¤×÷£¬¿ÉÊÇûÓÐΪÑÝ×àʱµÄ½»»¥×öÈκÎÊÂÇé¡£"ÓÐÁËÕâÑùµÄÏë·¨£¬RobertsonÔÚ1992Ä꽨Á¢ÁËHeadspace£¬¹ÍÓÃÔ¹â×÷Çú×éÀ´°ïÖúʵÏÖËûµÄ¹Ûµã¡£HeadspaceÓÚ1996Äê³ÉΪ¹«Ë¾£¬ÏÖÔÚ±»³ÆÎªBeatnik¡£
¡¡¡¡JAVAÉùÒôÒôƵÒýÇæ
¡¡¡¡JAVAÉùÒôÒýÇæÎª¶àýÌå´´½¨£¬Í¬Ê±¿¼ÂÇÁËÓÎÏ·Éè¼ÆºÍ·¢²¼WEBÄÚÈÝ¡£Óñê×¼µÄ MIDIÎļþ¡¢RMFÎļþ¡¢²¢ÇÒ/»òÀ´×ÔÈκÎÔ´µÄ²ÉÑù£¬¸ÃÒýÇæ½«²¥·ÅÒôÀÖ»òÖÆÔìÒôÏìЧ¹û£¬Í¬Ê±¾¡¿ÉÄÜÉÙÓÃCPU¡£ËüÌṩÍêÈ«µÄ²¥·Å¿ØÖÆ£¬¾ßÓлìºÏÒôÏìµÄÄÜÁ¦²¢¿ÉʵʱµØ»ØÓ¦Óû§µÄÊäÈë¡£
¡¡¡¡JAVAÉùÒôÒýÇæÊÇÈí¼þ MIDIºÏ³ÉÆ÷,²ÉÑù²¥·ÅÉ豸,ÒÔ¼°16λÁ¢Ìå»ìÉùÆ÷¡£ËüÖ§³Ö»ìºÏÖ±µ½64λµÄÁ¢ÌåMIDIÉùÒôºÍÒôƵ²ÉÑù¡£ËüÖ±½ÓÖ§³ÖMIDIÀàÐÍ0ºÍÀàÐÍ1ÎļþÒÔ¼°´Ó8λÉ豸µ½16λÀÖÆ÷µÄ²¨±íºÏ³É¡£¸ÃÒýÇæÖ§³ÖËùÓÐͨÓÃµÄ MIDI¿ØÖÆÆ÷²¢ÇÒ°üº¬Ïó»ØÉù´¦Àí, LFO (¿ØÖƹýÂËÆ÷»òÁ¢ÌåÉùÉ豸)Ö®ÀàµÄÌØÐÔ£¬ÒÔ¼°ADSRÐÅ·â (²¥·ÅʱÕûÐβÉÑù)¡£
¡¡¡¡¼´Ê¹ÓÃÉÏËùÓеŦÄÜ£¬JAVAÉùÒôÒýÇæÔÚÒ»¸ö90MhzµÄ±¼ÌÚ¼ÆËã»úÉÏÒ²Õ¼Óò»³¬¹ý30£¥µÄCPUʱ¼ä¡£Ëü»¹ÄÜͨ¹ýÓÐÑ¡ÔñµØ½ûÓò»ÐèÒªµÄÌØÐÔ£¬Ê¹Æä±äµÃ¸ü¼Ó¸ßЧһЩ¡£ÁíÍ⣬Ëü·¢²¼ÁË´æ´¢ÔÚѹËõµÄRMFÒôÀÖÎļþÖеķḻµÄÄÚÈÝ¡£Thomas Dolby RobertsonµÄ"ËýÓÿÆÑ§ÕÕÁÁÁËÎÒ"£¬Ò»Ê×7·Ö21ÃëµÄ¸èÇú£¬Èç´æ´¢ÎªCDÒôÖʵÄÎļþ×ã×ãÕ¼ÓÃ70M×ֽڿռ䡣Èç¹ûÒÔRMF¸ñʽ´æ´¢Ö»Ðè´óÔ¼636 KB,ÊÇ120:1µÄ¼õÉÙ£¬Í¬Ê±Ë¿ºÁ²»¼õÒôÖÊ¡£
Ϊ¸ü¶àÓйØBeatnikµÄÐÅÏ¢£¬Çë¿´BeatnikµÄWEBÕ¾µã¡£
JAVAƽ̨ÉùÒôµÄ¼òÒªÀúÊ·
¡¡¡¡ÔÚJDK 1.0.x¼°JDK 1.1.xÏÂ, AudioClip½Ó¿ÚÌṩÏÂÁлúÄÜ£º
¡¡¡¡l AudioClip½Ó¿Ú
¡¡¡¡¡¡¡¡²¥·Å
¡¡¡¡¡¡¡¡Ñ»·
¡¡¡¡¡¡¡¡Í£Ö¹
¡¡¡¡»Ö¸´ºÍ²¥·ÅÉùÒô×î¼òµ¥µÄ·½·¨ÊÇͨ¹ýAppletÀàµÄplay()·½·¨¡£µ÷ÓÃplay()·½·¨ÓÐÈç϶þÖÖ·½Ê½:
¡¡¡¡play()-´øÓÐÒ»¸ö²ÎÊý£¬Ò»¸ö URL¶ÔÏó,×°ÔØ²¢ÑÝ×à´¢´æÔÚ URL´¦µÄÉùÒôƬ¶Ï¡£
¡¡¡¡play()-´øÓжþ¸ö²ÎÊý£¬»ù±¾ URLºÍÎļþ¼Ð·¾¶Ãû,×°ÔØ²¢ÑÝ×àÉùÒôÎļþ¡£µÚÒ»²ÎÊý¾³£ÊǶÔgetCodeBase()»ò getDocumentBase()µÄµ÷Óá£
¡¡¡¡ÏÂÁдúÂëÆ¬¶Ï¾ÙÀý˵Ã÷ÁËÖ±½Ó²¥·Å hello.auµÄ·½·¨¡£AUÎļþÓëСӦÓóÌÐòλÓÚÏàͬÎļþ¼Ð»òĿ¼¡£
play(getCodeBase(), "hello.au");
¡¡¡¡play()Ò»µ©±»µ÷ÓÃÁ¢¿Ì¿ªÊ¼»Ö¸´ºÍ²¥·ÅÉùÒô¡£Èç¹ûÉùÒôÎļþ²»Äܱ»²éÕÒ,½«²»»áÓгö´íÐÅÏ¢,½ö½öÊdzÁĬ¡£
¡¡¡¡Æô¶¯ºÍÍ£Ö¹ÉùÒôÎļþ,»òÑ»·²¥·Å,Äã±ØÐëÓà appletµÄ getAudioClip·½·¨°ÑËü×°ÔØ½øÈë AudioClip¶ÔÏó£¬ÀàËÆÉÏÃæplay()·½·¨µÄ²ÎÊý£¬getAudioClip·½·¨ÒªÓÃÒ»¸ö»òÁ½¸ö²ÎÊý,µ±×÷²¥·ÅµÄָʾ¡£ µÚÒ»¸ö»òΨһµÄÒ»¸ö²ÎÊýÊÇ URL²ÎÊý£¬ÓÃÀ´Ö¸Ê¾ÉùÒôÎļþµÄλÖ㬵ڶþ²ÎÊýÊÇÎļþ¼Ð·¾¶Ö¸Õë¡£
¡¡¡¡ÏÂÁдúÂëÐоÙÀý˵Ã÷¼ÓÔØÉùÒôÎļþ½øÈë¼ôÌù¶ÔÏó:
AudioClip co = getAudioClip(getCodeBase(), "horns.wav");
¡¡¡¡getAudioClip()·½·¨½ö½öÄܱ»appletÄÚµ÷Óá£Ëæ×ÅJAVA2µÄÒýÈ룬ӦÓóÌÐòÒ²ÄÜÓÃAppletÀàµÄnewAudioClip·½·¨×°ÈëÉùÒôÎļþ¡£Ç°Ò»Àý×Ó¿ÉÒÔ¸ÄдÈçÏÂÒÔÓÃÓÚJavaÓ¦ÓóÌÐò:
AudioClip co = newAudioClip("horns.wav");
¡¡¡¡ÔÚÄãÒÑ´´½¨ AudioClip¶ÔÏóÖ®ºó,ÄãÄÜÓøöÔÏóµ÷ÓÃplay()¡¢loop()ÒÔ¼°stop()·½·¨¡£Èç¹û getAudioClip»ò newAudioClip·½·¨²»ÄÜÕÒµ½Ö¸¶¨µÄÉùÒôÎļþ, AudioClip¶ÔÏóµÄÖµ½«Êǿյġ£ÊÔ×Ų¥·Å¿Õ¶ÔÏó»áµ¼Ö³ö´í£¬ËùÒÔ±ê×¼µÄ¹ý³ÌÊ×ÏÈÊǶԸÃÌõ¼þ½øÐмì²â¡£
½ÓÏÂÀ´ÊÇÒ»¸öÍêÕûµÄ³ÌÐòÉè¼ÆÊ¾Àý£¬¸Ã³ÌÐò½«²úÉúÒ»¸öapplet£¬µ±Êó±êÔÚ¸ÃСӦÓóÌÐòapplet·¶Î§ÄÚ°´ÏÂʱ»á²¥·Å flute+hrn+mrmba.auÒôÀÖÑù±¾¡£´ËAUʾÀýÎļþÓëappletÔÚÏàͬĿ¼»òÎļþ¼Ðϵġ£
import java.applet.*;
import java.awt.event.*;
public class PlayAudio extends Applet
implements MouseListener {
AudioClip audio;
public void init() {
audio = getAudioClip(getDocumentBase(),
"flute+hrn+mrmba.au");
addMouseListener(this);
}
public void mousePressed(MouseEvent evt) {
if (audio != null) audio.play();
}
public void mouseEntered (MouseEvent me) {
}
public void mouseExited (MouseEvent me) {
}
public void mouseClicked (MouseEvent me) {
}
public void mouseReleased(MouseEvent me) {
}
}
¡¡¡¡×¢Ò⣺ ÔÚÐí¶àJAVA2¼¼ÊõÊé¼®ÖУ¬mouseDown()·½·¨È·ÊµÊÇJAVA 1.0ʼþÄ£Ð͵ÄÒ»²¿·Ö¡£Ê¹Óø÷½·¨»áÓÐÒ»¶¨µÄΣÏÕ£¬ÒòΪ¸Ã·½·¨ÔÚ½«À´¿ÉÄܲ»»á±»Ö§³Ö¡£ÔÚJAVA2ƽ̨Ͻ«MouseListenerÓëmousePressed½áºÏʹÓÃÊÇÓÅÏȵÄÑ¡Ôñ¡£
API 1.0-ÖʵķÉÔ¾
¡¡¡¡×¢Ò⣺ÏÂÁб¸×¢ÊÇÒÔJAVA APIµÄÔçÆÚ°æ±¾0.86Ϊ»ù´¡µÄ¡£ËäȻĿǰÕâÀïÌÖÂ۵Ĵó¶àÊý¶ÔÏóºÍ¸ÅÄîÓë¹ýÈ¥±£³ÖÒ»Ö£¬µ«ÓÉÓÚ¸ÃAPI°æ±¾ÒѾÖÕÖ¹£¬³öÏÖijЩ¸Ä±äµÄ¿ÉÄÜÊÇ´æÔڵġ£
¡¡¡¡JAVAÉùÒô 1.0 APIΪJAVAƽ̨¶¨ÒåÁËÒ»ÕûÌ׵Ļù±¾µÄµ×²ãÒôƵ´¦Àí¹¦ÄÜ¡£ËüÌṩÈçϽӿÚΪ:
¡¡¡¡ÒôƵ²¶»ñºÍ²¥·Å
¡¡¡¡IDIºÏ³É¼°ÐòÁл¯
¡¡¡¡ÕâÁ½¸öÖ÷ÒªµÄ¹¦ÄÜÄ£¿éÔÚ¸÷×ԵijÌÐò°üÖÐÌṩ¡£
javax.media.sound.sampled-¸Ã³ÌÐò°üÃ÷È·µØËµÃ÷Á˲¶»ñ¡¢»ìºÏÒÔ¼°»Ø²¥Êý×Ö²ÉÑùÒôƵµÄ½çÃæ¡£
javax.media.sound.MIDI-¸Ã³ÌÐò°üÌṩMIDIºÏ³É¡¢ÐòÁл¯ÒÔ¼°Ê¼þ´«Ë͵ĽçÃæ¡£
¡¡¡¡JAVA 1.0 API¾ß±¸ÈçÏÂÌØÐÔ:
¡¡¡¡Êý×ÖÒôƵ
¡¡Æµ²¶»ñ£´ÓÊäÈëÔ´ÀýÈçÂó¿Ë·ç½øÐÐÊý¾Ý²¶»ñ¡£ ¡¡
¡¡ÒôºÍÖØ²¥£½«¸÷ÖÖÊäÈëÔ´µÄÉùÒô»ìºÏ²¢Öز¥¡£ ¡¡
¡¡ÖÆÓë±àÂ룵÷ÕûÔöÒæ¡¢¶¨Î»¡¢»ØÒô´¦ÀíµÈµÈ£¬ÒÔ¼°½øÐиñʽת»»¡£
¡¡Ì¬¼°ÆäÌáʾ£µ±Öز¥¿ªÊ¼ºÍ½áÊø¡¢É豸´ò¿ª»ò¹Ø±ÕÒÔ¼°ÆäËûÏà¹ØÊ¼þ·¢Éúʱ½ÓÊÕʼþ¡£
¡¡¡¡¶ÔMIDIµÄÖ§³Ö
¡¡¡¡
¡¡MIDIÏûÏ¢£½»»»ÏûÏ¢£¨´ò¿ªÒô·û£¬¹Ø±ÕÒô·û£¬ÖîÈç´ËÀࣩ ¡¡¡¡
¡¡ºÏ³É£´ÓMIDIÊý¾Ý×°ÈëÀÖÆ÷²¢²úÉúÉùÒô¡£ ¡¡¡¡
¡¡ÐòÁл¯£×°ÈëÒ»¸öMIDIÐòÁУ¬¿ªÊ¼ºÍÍ£Ö¹²¥·Å£¬ÒÔ¼°µ÷Õû½Ú×à¡£<£¯li>
¡¡¡¡¹¤¾ß
¡¡¡¡
¡¡¼þÊäÈëÊä³ö£¶ÁдͨÓÃÒôƵÎļþÀýÈçWAV£¬AIFF¼°MIDI ¡¡
¡¡Öã²éѯϵͳÀ´»ñµÃ×é¼þºÍÉ豸µÄÐÅÏ¢£»°²×°»òÈ¡Ïû±àÂë¡¢Îļþ·ÖÎöÆ÷ºÍÉ豸µÈ¡£
Êý×Ö»¯ÒôƵ
¡¡¡¡Í¨µÀ
¡¡¡¡Kara Kytle, JAVAÉùÒô APIÖ÷¹Ü¹¤³ÌʦºÍϵͳÉè¼ÆÊ¦Ëµ:"ChannelÊÇÒôƵ¹ÜµÀÖеĻù±¾¹¦Äܲ¿¼þ"¡£ÊµÏÖChannel½çÃæµÄÀà´ú±íןÃ"¹ÜµÀ"µÄÒ»¸öÔªËØ£¬ÀýÈçÓ²¼þÉ豸£¬Ò»¸öÉùÒôºÏ³ÉÆ÷£¬»òÕßÊÇÒ»¸öµ¥ÒôƵÁ÷¡£
¡¡¡¡InputChannelºÍ OutputChannel¼Ì³ÐÁËChannel,·Ö±ðÓÃÓÚ¶ÁÈë±»²¶»ñµÄÊý¾ÝºÍΪ²¥·ÅдÊý¾Ý¡£×Ó½çÃæClipÖ§³Ö¶ÔԤװÈëµÄÒôƵÊý¾ÝÑ»·²¥·ÅºÍÖØÐ¶¨Î»¡£Device±íʾÈκÎÓÃÓÚ²¶»ñ¡¢²¥·Å»ò»ìºÍÒôƵµÄÓ²¼þ»òÈí¼þÉ豸¡£
¡¡¡¡¸Ã½çÃæµÄ²ã´Î½á¹¹ÈçÏÂͼËùʾ¡£²Î¿¼°üjavax.media.sound.sampled¡£
¡¡¡¡
¡¡¡¡µ±Ò»¸öChannel´ò¿ªÊ±,ËüΪ×Ô¼º±£ÁôÁËϵͳ×ÊÔ´ ,²¢ÇÒµ±Ëü½áÊøÊ±,ÕâЩ×ÊÔ´±»ÊͷŸøÆäËûµÄÓ¦ÓóÌÐòºÍ¶ÔÏóʹÓá£ÓÃisOpen()·½·¨¿ÉÒÔ²éѯChannelÊÇ´ò¿ª»¹Êǹرյġ£Êý¾ÝµÄ´¦Àíͨ³£ÓÉ×Ó½çÃæ·½·¨±ÈÈçread()·½·¨À´Æô¶¯£¬Õⲿ·ÖÔÚInputChannel½çÃæËµÃ÷ÃèÊö (Çë¿´JAVAÉùÒô APIµÄ˵Ã÷Êé)¡£
¡¡¡¡´¦Àí·½·¨Ê¹Channel´¦ÓÚ¸ºÔðÊäÈë»òÊä³öÒôƵÊý¾ÝµÄ״̬¡£ÓÃisActive·½·¨¿ÉÒÔʶ±ðChannelÊÇ·ñ´¦ÓÚÕâÖÖ״̬¡£Í¨¹ýµ÷ÓÃpause()·½·¨¿ÉÒÔʹͨµÀ´¦ÓÚÔÝͣ״̬£¬´Ë״̬¿ÉÒÔͨ¹ýisPaused()·½·¨Åб𡣵±Í¨µÀ±»ÔÝͣʱ,ÓÐÈýÖÖÑ¡Ôñ£º±£ÁôÊý¾Ý(ȱʡ),ÓÃflush()·½·¨¶ªÆúÄÚ²¿»º³åÆ÷ÖеÄÊý¾Ý£¬»òÓÃdrain()·½·¨Ê¹ÄÚ²¿»º´æÖеÄÊý¾Ý±»Á¢¼´´¦Àí¡£
¡¡¡¡¶ÔÏóÊÂÏÈ¿ÉÒÔ×¢²á£¬ÕâÑùÿµ±Í¨µÀ״̬¸Ä±äʱËü¶¼¿ÉÒÔÊÕµ½Í¨¸æÐÅÏ¢¡£¸Ã×¢²á¶ÔÏó±ØÐëʵÏÖChannel.Listener½çÃæ£¬¸Ã½çÃæ½ö°üº¬Ò»¸ö·½·¨update()¡£µ±Channel´ò¿ª¡¢½áÊø¡¢Æô¶¯¡¢¼°Í£Ö¹Ê±£¬¸Ã·½·¨¶¼½«±»µ÷Óᣵ±Channel¿ªÊ¼»òÍ£Ö¹»î¶¯ÒÔ¼°¿ªÊ¼»òÍ£Ö¹²¶»ñÊý¾Ýʱ£¬»á²úÉústart»òstopʼþ¡£
¡¡¡¡ÊäÈëͨµÀ
¡¡¡¡InputChannelÊDZ»²¶»ñµÄÒôƵÊý¾ÝµÄÔ´Í·¡£¸Ã½çÃæÌṩÁË·½·¨£¬¿É´Ó InputChannel»º³åÆ÷¶ÁÈ¡±»²¶»ñµÄÊý¾Ý£¬²¢Åжϵ±Ç°¿É¶ÁµÄÊý¾ÝÁ¿¡£Èç¹ûÓ¦ÓóÌÐòÊÔͼ¶Á¹ý¶àµÄÊý¾Ý,¸Ã¶Á·½·¨×èÈû£¬Ö±µ½ËùÐè¶ÁÈ¡Êý¾Ý´ïµ½ÎªÖ¹¡£
¡¡¡¡Êä³öͨµÀ
¡¡¡¡OutputChannel½ÓÊÕÓÃÓÚ²¥·ÅµÄÒôƵÊý¾Ý¡£Õâ½Ó¿ÚÌṩ·½·¨£¬½«Òª²¥·ÅµÄÊý¾ÝдÈëOutputChannelµÄ»º³åÇø£¬²¢ÄÜÅжϸÃͨµÀ²»¼ä¶Ï¿É½ÓÊÕµÄÊý¾ÝÁ¿¡£Èç¹ûÓ¦ÓóÌÐòÊÔͼд¹ýÁ¿µÄÊý¾Ý£¬¸Ã¶Á·½·¨×èÈû£¬Ö±µ½ÓÐ×ã¹»Êý¾ÝΪֹ¡£
¡¡¡¡¼ôÌù
¡¡¡¡Clip½Ó¿Ú±íʾһ¸öÌØÊâµÄͨµÀ£¬Ëü¿ÉÒÔÔÚ²¥·Å֮ǰÏÈ×°ÈëÒôƵÊý¾Ý¡£ÓÉÓÚÊý¾ÝÊÇԤװÈëµÄ£¬¶ø²»ÊÇÁ÷ÈëµÄ£¬ËùÒÔclip¿ÉÒÔÖ§³Ö³ÖÐø²éѯ¡¢Ñ»·²¥·Å¡¢ÒÔ¼°ÖØÐ¶¨Î»²¥·Å¡£
É豸
¡¡¡¡Device½çÃæÎª±íʾÒôƵÉ豸µÄÀàÌṩ·½·¨¡£ÒôƵÉ豸¿ÉÒÔÊǹ²ÏíµÄÒ²¿ÉÊǶÀÕ¼µÄϵͳ×ÊÔ´£¬Ëü¿ÉÒÔÊÇ»ùÓÚÓ²¼þµÄ£¬Ò²¿É»ùÓÚÈí¼þµÄ£¬»¹¿ÉÊÇͬʱ»ùÓÚÁ½Õߵġ£ËüÄܱ»Öظ´µØ´ò¿ªºÍ¹Ø±Õ£¬ËüÄÜʱ³£ËµÃ÷ËüµÄÄÚÔÚÌØÐÔ¼°Ö§³ÖµÄÒôƵ¸ñʽ¡£Í¬Ê±£¬ËüÒ²ÌṩÐÅÏ¢¶ÔÏóÀ´ÃèÊöÉ豸¡£
¡¡¡¡JAVAÉùÒô API½øÒ»²½ÃèÊöÈýÖÖÉ豸×Ó½çÃæ:
InputDevice
InputDevice½çÃæÌṩһ¸ö·½·¨getInputChannelÀ´»ñµÃÒ»¸öInputChannel¶ÔÏ󣬴ÓÖв¶»ñ¿É¶ÁµÄÒôƵÊý¾Ý¡£
OutputDevice
OutputDevice½çÃæÌṩһ¸ö·½·¨getOutputChannelÀ´»ñµÃÒ»¸öOutputChannel¶ÔÏó£¬ÒôƵÊý¾Ý¿ÉÒÔдÈë¸ÃÊä³öͨµÀ£¬²¢Óè²¥·Å¡£
Mixer
MixerÖ§³Ö¶à¸öInputChannelºÍ/»òClip¡£ ÁíÍâ,ËüÌṩÁ˲éѯ·½·¨£¬´ÓÖпɵõ½ËüËùÖ§³ÖµÄͨµÀÊýÁ¿£¬ËüÒ²ÌṩÁËÖ§³Öͬ²½ÔÝÍ£ºÍ»½ÐѶà¸öͨµÀ²¥·ÅµÄ·½·¨¡£
¡¡¡¡¿Ø¼þ
¡¡¡¡Í¨µÀºÍÒôƵ¶Ë¿Ú (±ÈÈçÑïÉùÆ÷ºÍÂó¿Ë·ç)Ò»°ãÄÜÖ§³ÖÒ»×é¿Ø¼þ±ÈÈçÔöÒæºÍ¶¨Î»¡£Í¨¹ý½«ËüµÄÀà×÷Ϊ²ÎÊý´«¸øgetControl()·½·¨£¬JAVAÉùÒô APIµÄͨµÀ¶ÔÏóºÍ¶Ë¿Ú¶ÔÏó¿ÉÒÔ»ñµÃÒ»¸öÌØ±ðµÄ¿Ø¼þ¡£
¡¡¡¡±àÂëÆ÷
¡¡¡¡Codecs¿ÉÒÔ¶ÔÒôƵÊý¾Ý±àÂëºÍ½âÂ룬ÔÊÐíÔÚ²»Í¬¸ñʽºÍ±àÂëÖ®¼äת»»¡£JAVAÉùÒô APIͨ¹ýAudioSystemÀàÖеķ½·¨ÎªÕâЩת»»ÌṩÁ˸߼¶½Ó¿Ú¡£Èç¹û¸øÁËÒ»¸öÌØÊâµÄÒôƵÁ÷£¬Ó¦ÓóÌÐò»á²éѯÒôƵϵͳÀ´ÕÒµ½ÏàÓ¦µÄת»»£¬´Ó¶øµÃµ½Ö¸¶¨¸ñʽµÄÒôƵÁ÷¡£
¡¡¡¡ÎļþºÍÁ÷
¡¡¡¡ÒôƵÁ÷ÊÇÓëÒôƵÊý¾Ý¸ñʽºÍÊý¾Ý³¤¶ÈÏà¹ØµÄÊäÈëÁ÷£¬ÎļþÁ÷ÊÇÓëÎļþÀàÐͺÍÊý¾Ý³¤¶ÈÏà¹ØµÄÊäÈëÁ÷¡£JAVAÉùÒô APIÔÚAudioSystemÀàÖÐΪÒôƵÎļþºÍÒôƵÁ÷Ö®¼äµÄת»»ÌṩÁ˽ӿڡ£
¡¡¡¡²éѯºÍ·ÃÎʰ²×°×é¼þ
¡¡¡¡AudioSystemÀà³äµ±µ½²ÉÑùÒôƵϵͳ×ÊÔ´Èë¿ÚµÄ½ÇÉ«¡£¸ÃÀàÔÊÐí³ÌÐòÔ±²éѯºÍ·ÃÎÊÊäÈëÉ豸¡¢Êä³öÉ豸ÒÔ¼°°²×°ºÃµÄ»ìÒôÉ豸¡£ÁíÍ⣬AudioSystem°üº¬Ðí¶àÔÚ²»Í¬ÒôƵÊý¾Ý¸ñʽ¼äת»»µÄ·½·¨¡£ËüÒ²ÌṩһЩ·½·¨£¬Ê¹µÃÔÚ²»ÐèÒª¶ÔÉ豸ֱ½Ó²Ù×÷µÄÇé¿öÏ£¬Ö±½Ó»ñµÃÊäÈëͨµÀ»òÊä³öͨµÀ¡£
ϵͳÅäÖÃ-·þÎñÌṩÕß½çÃæ(SPI)
¡¡¡¡¶Ô²ÉÑùÒôƵϵͳµÄÅäÖÃÊÇÓÉjavax.media.sound.sampled.spi°üÀ´Íê³ÉµÄ¡£Í¨¹ý AudioConfigÀàµÄ·½·¨£¬¿ÉÒÔÔÚϵͳÖа²×°»òÐ¶ÔØÉ豸£¬²¢ÇÒ¿ÉÒÔ½¨Á¢Æðȱʡ״̬¡£·þÎñÌṩÕß¿ÉÒÔÏ£ÍûÌṩºÍ°²×°ËûÃÇ×Ô¼ºµÄ±àÂëÆ÷ºÍ·ÖÎöÆ÷¡£Õâ¸ö°üÌṩÁËÍê³ÉÕâÖÖ¹¦ÄܵĻúÖÆ¡£
¡¡¡¡MIDI
¡¡¡¡javax.media.sound.MIDI³ÌÐò°üÃèÊöÁË MIDIʼþ´«ËÍ¡¢ºÏ³É¡¢ÒÔ¼°ÐòÁл¯µÄ½çÃæ¡£ÏÂÃæ½éÉܸóÌÐò°üÖÐËùÓõ½µÄÖ÷Òª¸ÅÄî¡£
¡¡¡¡´«ËÍ
¡¡¡¡»ù±¾µÄMIDI´«ËͽçÃæÊÇ MidiDevice¡£ËùÓÐÉ豸ΪÁгöÆäËùÖ§³ÖµÄģʽºÍ²éѯµ±Ç°Ä£Ê½ÌṩÁË·½·¨¡£É豸֧³Ö¼àÌýÆ÷£¬¿ÉÒÔ¼àÌý¸÷ÖÖʼþÈç´ò¿ªºÍ¹Ø±Õʼþ£¬²¢ÇÒÓÐÒ»¸öÐÅÏ¢¶ÔÏóÀ´ÃèÊöÉ豸״̬¡£
¡¡¡¡Í¨³£,É豸ÊÇMIDIʼþµÄ´«ËÍÆ÷»ò½ÓÊÕÆ÷Ö®Ò»¡£´«ËÍÆ÷½çÃæÌṩÁËһЩ·½·¨À´ÉèÖúͲéѯ½ÓÊÕÆ÷£¬¸Ã½ÓÊÕÆ÷½ÓÊÕÓɸô«ËÍÆ÷·¢ËͳöµÄMIDIʼþ¡£½ÓÊÕÆ÷Ϊ½ÓÊÕMIDIʼþÌṩ·½·¨¡£
¡¡¡¡»ù±¾µÄ MidiEvent¶ÔÏóÊÇͨ¹ýÒ»¸öÏûϢ˵Ã÷ʼþÀàÐÍ¡¢Êý¾Ý³¤¶È¡¢ÒÔ¼°×´Ì¬¡£ËüÒ²ÎªÉæ¼°MIDI¼ÆÊ±µÄÉ豸ÀýÈçÒôÐòÆ÷Ìṩ׼ȷµÄ¼ÆÊ±Ðźš£
ºÏ³ÉÆ÷
¡¡¡¡ºÏ³ÉÆ÷½çÃæÊÇÒ»ÖÖÉú³ÉÉùÒôµÄÌØÊâÀàÐ͵ĽÓÊÕÆ÷¡£ËüÒ²ÌṩһЩ·½·¨À´¹ÜÀíÉùÒô¿âºÍÀÖÆ÷¡£ÁíÍâ,ºÏ³ÉÆ÷¿ÉÒÔÖ§³ÖÒ»×éÈ«¾ÖµÄ·Ç-MIDI¿Ø¼þÀýÈçÔöÒæºÍ¶¨Î»¡£ËüÒ²Ìṩ¶ÔÒ»×éMIDIͨµÀµÄ·ÃÎÊ£¬Êµ¼ÊÉÏ£¬ÉùÒô¾ÍÊÇͨ¹ýÕâЩͨµÀ²úÉúµÄ¡£
¡¡¡¡MidiChannel½çÃæÌṩһ×é·½·¨À´±í´ï¹«ÓõÄMIDIÉùÒôÏûÏ¢ÀýÈç noteON, noteOffÒÔ¼°controlChange¡£»¹Ö§³Ö¶Ôµ±Ç°Í¨µÀ״̬µÄ²éѯ¡£
¡¡¡¡ÐòÁл¯
¡¡¡¡Sequencer½çÃæ¼Ì³ÐÁËMidiDevice,ËüÌṩÁËÍê³É»ù±¾MIDIÐòÁл¯²Ù×÷µÄ·½·¨¡£ÒôÐòÆ÷¿ÉÒÔ×°ÔØºÍ²¥·ÅÒ»¸öÐòÁУ¬²éѯºÍÉèÖýÚ×࣬²¢ÇÒ¿ØÖÆÖ÷´Óͬ²½·½Ê½¡£Ò»¸öÓ¦ÓóÌÐò»¹¿ÉÒÔͨ¹ý×¢²áʹµÃÒôÐòÆ÷ÔÚ´¦ÀíÉ豸µ¥ÔªºÍ¿ØÖÆÆ÷ʼþʱ֪ͨ×Ô¼º¡£
¡¡¡¡ÎļþºÍÐòÁл¯
¡¡¡¡ÐòÁл¯¶ÔÏó´ú±íÒ»¸öÀ´×ÔÒ»¸ö»ò¶à¸ö´ÅµÀµÄMIDIÐòÁÐÒÔ¼°Ïà¹ØµÄ¼ÆÊ±ÐÅÏ¢¡£Ò»¸ö´ÅµÀ¶ÔÏó°üº¬Ò»ÏµÁмÓÉÏʱ¼ä±ê¼ÇµÄMIDIʼþ¡£
¡¡¡¡JAVAÉùÒô APIÔÚ MidiSystemÀàÖÐΪÔÚMIDIÎļþºÍÐòÁл¯¶ÔÏóÖ®¼äת»»ÌṩÁ˸߼¶µÄ½Ó¿Ú¡£
¡¡¡¡²éѯºÍ·ÃÎÊÒѾ°²×°Á˵Ä×é¼þ
¡¡¡¡MidiSystemÀà³äµ±MIDIÒôÀÖϵͳÈë¿ÚµÄ½ÇÉ«¡£ËüÌṩÏà¹ØÉ豸µÄÐÅÏ¢²¢¶ÔÖ®½øÐзÃÎÊ£¬ÕâЩÉ豸°üÀ¨´«ËÍÆ÷,½ÓÊÕÆ÷,ºÏ³ÉÆ÷,ÒÔ¼°ÒôÐòÆ÷¡£ËüÒ²ÌṩÁ˶ÔSoundBank¶ÔÏóµÄ·ÃÎÊ¡£
¡¡¡¡ÏµÍ³ÅäÖÃ-·þÎñÌṩÕß½Ó¿Ú(SPI)
¡¡¡¡MIDIϵͳµÄÅäÖÃÓÉjavax.media.sound.midi.spi°üÀ´Íê³ÉµÄ¡£Í¨¹ýMidiConfigÀàµÄ·½·¨£¬É豸¿ÉÒÔ°²×°µ½ÏµÍ³Öлò´ÓÖÐÐ¶ÔØ£¬²¢ÇÒ¿ÉÒÔ½¨Á¢Æðȱʡ״̬¡£·þÎñÌṩÕß¿ÉÒÔÏ£ÍûÌṩºÍ°²×°ËûÃÇ×Ô¼ºµÄÎļþºÍÉùÒô¿â·ÖÎöÆ÷¡£¸ÃSPI³ÌÐò°üÖаüÀ¨ÁËÍê³ÉÕâÖÖ¹¦ÄܵĻúÖÆ¡£
¡¡¡¡ÏÖÔÚÈÃÎÒÃÇ¿´¿´ÄÜÓÃÕâЩÀàºÍ·½·¨×öʲô¡£Çë×Ðϸ¼ì²éһϡ£
¡¡¡¡ToySynthÓ¦ÓóÌÐò
¡¡¡¡
¡¡¡¡ToySynthÓ¦ÓóÌÐòÊÔÑéÁËÔçÆÚ¶ÔJAVAÉùÒô API´æÈ¡µÄ·½Ê½£¬Ö÷ÒªÊÇͨ¹ýÌṩһϵÁÐÉ豸ÉèÖ㬰üÀ¨MIDIͨµÀÑ¡Ôñ¡¢ÒôÁ¿¿ØÖÆ¡¢Á¢ÌåÉù¶¨Î»¡¢»ØÉù´¦Àí¡¢ÒÔ¼°ÆäËûÑ¡Ïͨ¹ýÇû÷¼üÅ̾ͿÉÒÔÑÝ×àʹÓÃÖ¸¶¨É豸µÄÀÖÇú£¬¶øÕâЩÉ豸ÓÖ¶¼ÊÇͨ¹ýJAVAÉùÒôÒýÇæÀ´ÊµÏֵġ£
¡¡¡¡ÍêÕûµÄToySynth.java´úÂëÑù±¾¡£
¡¡¡¡ÏÂÔØJAVAÉùÒô APIµÄͬʱ¿ÉÒԵõ½Ê¾·¶Ó¦ÓóÌÐò¼°ÆäÔ´´úÂë¡£
JAVAÉùÒô APIµÄÊг¡Ä¿±ê
¡¡¡¡JAVAÉùÒô APIΪ¸÷ÖÖ¸÷ÑùµÄÓ¦ÓóÌÐòÌṩÁËÉùÒôÖ§³Ö¡£ÏÂÃæÁоÙһЩ¿ÉÄܵÄÓ¦Óá£
¡¡¡¡Í¨ÐÅ¿ò¼Ü
¡¡¡¡Í¨¹ý¼ÆËã»úÕÙ¿ªÔ¶³Ì»áÒé
¡¡¡¡ÔÚ¼ÆËã»úÉÏʵÏֵ绰¹¦ÄÜ
¡¡¡¡ÄÚÈÝ·¢²¼ÏµÍ³
¡¡¡¡ÒôÀÖ
¡¡¡¡ÐÅÏ¢Á÷
¡¡¡¡Ã½Ìå´«²¥
¡¡¡¡½»»¥Ê½Ó¦ÓóÌÐò
¡¡¡¡ÓÎÏ·
¡¡¡¡WEBÕ¾µã
¡¡¡¡²úÉú¶¯Ì¬ÄÚÈÝ
¡¡¡¡¹¤¾ß¼¯
¡¡¡¡ÄÚÈݲúÉú
¡¡¡¡¸÷ÖÖ¹¤¾ß
¡¡¡¡ÔÚ´Ë»ù´¡ÉÏÎÒÃÇÄÜ×öʲô£¿
¡¡¡¡JAVA 2ͨ¹ý AudioClip½çÃæÀ´·ÃÎÊJAVAÉùÒôÒôƵÒýÇæ¡£Ëæ×Å1.0 APIµÄ·¢²¼,ÎÒÃÇËùÔø¾Ì½Ë÷µÄÓ¦ÓÃÁìÓò£¬¾Í½«Ìṩ¸ø¸÷µØµÄ¿ª·¢ÈËԱʹÓá£
¡¡¡¡"ÏÖÔÚ,ÎÒÃÇͨ¹ýÔÚJAVA2ƽ̨ÖмÓÈëÕæÊµÉùÒôµÄÖ§³Ö£¬Æô¶¯Á˼ÆËã»ú×ÀÃæ¶àýÌåÊг¡¡£ÒÔºó,ÎÒÃǽ«¿´¼ûÎÒÃǵÄJAVAÉùÒôAPI¼¼Êõ¹ã·ºÓ¦ÓÃÓÚרҵÈËÔ±¡¢ÆÕͨÓû§ÒÔ¼°¹ú¼Ê»¥Á¬ÍøÉϵÄÒôƵӦÓÃ", Michael Bundschuh˵¡£
¡¡¡¡µçÓ°ºÍ¼Òô´ø¹«Ë¾Í¨¹ýʹÓÃJAVAÉùÒô API¼¼Êõ¿ÉÒÔ»ñµÃרҵÖÊÁ¿ÒôƵЧ¹û¡£ÔÚJAVAÉùÒôÒýÇæÖÐʵÏÖÖ§³Ö24λÒôƵºÍ¶àͨµÀÅäÖý«¹ÄÀø×¨ÒµÈËÔ±¿ª·¢³ö¸ß¼¶µÄÉùÒô±à¼ºÍ²¥·ÅÓ¦ÓóÌÐò¡£
¸ù¾Ý Kara KytleËù˵£¬¶Ô¸ü¶àµÄÒôƵÊý¾ÝÀàÐÍÀýÈçMP3µÄÖ§³ÖÒѾ±»Ìáµ½ÒéÊÂÈճ̡£"ÁíÒ»¸öÒé³ÌÊÇ´ÓÍⲿÉ豸¶ÔMIDIÊý¾Ý½øÐв¶»ñ¡£Õ⽫ºÜ¿ìʵÏÖ¡£"Ëý˵¡£
¡¡¡¡"JAVAÉùÒô API¼¼ÊõÒѾ¿ÉÒԺܺõØÊÊÓÃÓÚͨ¹ýWEBµÄÒôƵ²¥·Å¡£"Bundschuh˵¡£"µ«ÊÇÎÒÃÇ×ÜÊǸú×Ù×îеļ¼Êõ£¬²¢ÇÒ¿ª·¢ÏóMP3ÕâÑùµÄ¼¼Êõ£¬Í¬Ê±»¹Òª±£»¤ÒôÀÖÎļþµÄ°²È«´«ËÍ¡£ÎÒÃǼƻ®ÔÚJAVAÉùÒô API½ñºóµÄ°æ±¾ÖÐÌṩ¶ÔÉÏÊö¼¼ÊõµÄÖ§³Ö"¡£
¡¡¡¡Ëæ×Å×î½üÊг¡µÄ·¢Õ¹£¬Ïó²¥·Å»ùÓÚWEBÒôÀÖÉϵľºÕù²ßÂÔÒ»Ñù£¬´ó¼Ò¶¼ÒѾ°Ñ·¢Õ¹Êý×Ö»¯ÉùÒô·ÅÔÚÖÐÐĵÄλÖá£ÐµÄýÌå¼¼Êõ²»¶ÏÓ¿ÏÖ£¬ÉùÒô½«°çÑݺËÐĵĽÇÉ«¡£JAVAÉùÒô 1.0 API½«ÊÊʱµØ¼ÓÈ뵽еĹؼüÓ¦ÓóÌÐò¿ª·¢ÐÐÁÐÖÐÀ´¡£
¡¡¡¡ÏÖ¿ÉÒԵõ½ToySynth.java³ÌÐò´úÂë
¡¡¡¡¸Ã³ÌÐòͨ¹ýͼÐÎÐÎÏ󵨱íʾ³öÒ»¸öºÏ³ÉÆ÷µÄÑù×Ó£¬Í¨¹ýÊó±êÈ¥°´ºÏ³ÉÆ÷ÉϵļüÀ´ÑÝ×àÀÖÇú¡£Äã¿ÉÒÔͨ¹ýÉùÒôÉèÖÃÒÔ¼°ÆäËûÑ¡ÏîÈ¥¸Ä±äÉùÒôµÄ»ùµ÷¡£ºÃºÃÍæ°É¡£
5 07, 2007
ÔÚ×é¼þÉÏÏÔʾͼÏó(ת)
ÔÚ AWT ÖÐʵÏÖÕâÒ»·½·¨£¬Èç¹ûÄãÖªµÀ£¬ÇëÀ´ÐŸæËßÎÒ¡£
ÔÚ swing ÖÐ,button, lable µÈ×é¼þ¶¼¿ÉÇáÒ×µÄÓÃͼÏóÀ´¸Ä±äËüµÄÍâ¹Û£¬ÒÔ button ΪÀý£¬µ±´´½¨Ò»
¸ö button ¶ÔÏóµÄʱºòͨ³£ÊÇÕâÑùµÄ£º
JButton button = new JButton("Click me");
ÕâÑù¾Í´´½¨ÁËÒ»¸ö button ¶ÔÏó£¬ÉÏÃæÏÔʾµÄÎÄ×ÖÊÇ Click me.
ÏÖÔÚÎÒÃÇÀ´ÉÔ×ö¸Ä¶¯£º
ImageIcon buttonIcon = new ImageIcon("button.gif", "a background of button");
JButton button = new JButton(buttonIcon);
ÕâÁ½ÐдúÂë¾Í´ïµ½ÁËÄ¿µÄ£¬ÔÚ button ÉÏÏÔʾÁËͼÏó button.gif,×¢ÒâÎÒÃÇÓõÄÊÇ ImageIcon À࣬¶ø
²»ÊÇ Image Àà¡£ImageIcon Öеĵڶþ¸ö²ÎÊýÊÇ¶Ô ImageIcon ¶ÔÏóµÄÃèÊö£¬Õâ¸ö²ÎÊýÒÔºó¿ÉÄܻᱻ
assistive ¼¼ÊõÓõ½¡£
Èç¹ûÏëÔÚ button ÉÏͬʱÏÔʾÎÄ×ÖºÍͼÏ󣬻¹¿ÉÒÔÕâÑù£º
JButton button = new JButton("Click me", buttonIcon);
ÁíÍ⣬»¹¿ÉÒÔ¶¨ÒåͼÏóÔÚ ×é¼þÉϵÄλÖã¬È磺
JButton button = new JButton("Click me", buttonIcon, JButton.CENTER);
×îºó£¬ÔÚ˳±ãµÄ½²Ò»ÏÂÈçºÎ¸Ä±äÄãµÄ applet/application ÉϽǵÄÄǸöСͼ±ê£¬ÔõôÑù£¬¿´ÄDZ¿§·ÈÑá·³Á˰ѣ¿
ÈÃÎÒÃÇÀ´»»ÉÏ×Ô¼ºµÄͼ±ê°É,ÎÒÓõÄÊÇsetIconImage·½·¨¡£
ÔÚ appletÖУ¬¶¨ÒåÁËÒ»¸öimage¶ÔÏóºó¾Í¿ÉÒÔÖ±½ÓÒÔËüΪ²ÎÊýÀ´Ê¹Óà setIconImage() ·½·¨ÁË£¬
¶øÔÚ application ÖУ¬»¹ÐèÒªÓÉ ImageIcon Ààת»»µ½ Image ¶ÔÏóÈ¥¡£¿ÉÄÜÊÇÎÒ±¿£¬²»ÖªµÀÈçºÎÔÚapplicationÖÐ
ÓÐʲô¼òµ¥µÄ°ì·¨¿ÉÒÔÖ±½ÓʹÓà Image À࣬ËÖªµÀÇëдПøÎÒ£¬Ê®·Ö¸Ðл¡£
URL imgURL = getClass().getResource("title.gif");
ImageIcon icon = new ImageIcon(imgURL);
setIconImage(icon.getImage());¡¡
5 07, 2007
JAVAµÄÉùÒô´¦Àí(ת)
JavaÄܹ»Ö§³ÖÒÔÏÂËÄÖÖÉùÒô¸ñʽ£º
¡ôAU
¡ôAIFF
¡ôWAVE
¡ôMIDI
¡¡¡¡µÚÒ»ÖÖÉùÒô¸ñʽAUΪÒÔǰµÄJava 1.1°æ±¾Ö§³ÖµÄΨһµÄÉùÒô¸ñʽ¡£²ÉÑùƵÂÊΪ8000ºÕ×È£¬²ÉÑù¾«¶ÈΪ8λ¡£AIFFºÍWAVEÓëAU¸ñʽһÑù£¬¶¼ÓÃÀ´±íʾÊý×Ö»¯µÄÉùÒô¡£ÆäÖУ¬WAVE¸ñʽÌṩÁ˸ü¿í·¶Î§µÄÒôÖÊ¡£MIDI¸ñʽרÓÃÓÚÒôÀÖ£¬²¢ÇÒÒÔÒô·ûÓëÀÖÆ÷¶ø²»ÊÇÊý×Ö»¯µÄÉùÒôÀ´ÃèÊöÉùÒôµÄ¡£
¡¡¡¡¹ØÓÚÉùÒôµÄ´´½¨£ºÉùÒô¹Ø¼ü¹¤¾ßΪWindows9XÖеıê×¼Ó¦ÓóÌÐò?¼Òô»ú¡£Â¼ÖƵĸñʽΪWAVE¡£ÁíÍ⻹Óкܶàרҵˮ׼µÄÓ¦ÓóÌÐò£¬²ÉÑùºÍ±à¼Êý×Ö»¯µÄÉùÒô£¬¼°¸ñʽµÄת»»¡£
×ÊÔ´ÐèÇó£º
¡ö Ó²¼þ×ÊÔ´ÐèÇó£º
¢ÅÉù¿¨
¢ÆÒôÏä
££ÈçÐèÒªÂ¼ÖÆÉùÒô£¬Õ⻹ÐèÂó¿Ë·ç¡£
¡ö Èí¼þ×ÊÔ´ÐèÇó£º
¢Åwindows9X²Ù×÷ϵͳ
¢ÆÍøÂçä¯ÀÀÆ÷
¢ÇJava²å¼þ/ÔËÐÐʱ¼ä»·¾³
´¦Àí·½°¸Ò»
¡¡¡¡JAVA2¿ªÊ¼£¬×¦ÍÛÓïÑÔÄܹ»Ö§³ÖÉÏÊöËÄÖÖÉùÒô¸ñʽ¡£¼òµ¥µÄ·½·¨ÎªÔÚjavaÖÐͨ¹ýAppletÀàµÄAudioClip()½Ó¿ÚÀ´×°ÔØÉùÒô¡£¸Ã½Ó¿Ú·ç×êÁËÓйØÉùÒôƬ¶ÏµÄ³£Ó÷½·¨£¬¾ßÓжԲ¥·ÅÉùÒôƬ¶ÏµÄ×îС֧³Ö¡£
¸Ã½Ó¿Ú¶¨ÒåÁËÈçÏ·½·¨£º
¡ö play()
Óï·¨£ºvoid play()
¹¦ÄÜ£º¿ªÊ¼²¥·ÅÉùÒôƬ¶Ï¡£
²»ÂÛÉùÒôƬ¶ÏÊÇ·ñÒѾÔÚ²¥·Å£¬¶¼´ÓÍ·²¥·Å¡£²¥·ÅÒ»±éµ«²»Öظ´¡£
¡ö loop()
Óï·¨£ºvoid loop()
¹¦ÄÜ£ºÑ»·²¥·ÅÉùÒôƬ¶Ï¡£
µ÷Óø÷½·¨ÊDz»ÂÛÉùÒôƬ¶ÏÊÇ·ñÒÑÔÚ²¥·Å£¬¶¼´ÓÍ·¿ªÊ¼²¥·Å¡£
¡ö stop()
Óï·¨£ºvoid stop()
¹¦ÄÜ£ºÍ£Ö¹²¥·ÅÉùÒôƬ¶Ï¡£
AudioClip½Ó¿Ú¿ÉÒÔͨ¹ýgetAudioClip()¼°getCodeBase()·½·¨À´»ñÈ¡ÉùÒôƬ¶Ï¼°
URLµØÖ·¡£¿ÉÒÔÀûÓô˷½·¨ÔÚWEBÒ³Öв¥·ÅÖ¸¶¨µÄÉùÒôƬ¶Ï¡£
££ÐèÇ󣺻ùÓÚJDK1.2ÒÔÉϰ汾µÄ¿ª·¢»·¾³¡£Èç¹ûÖ»²¥·ÅAU¸ñʽµÄÉùÒôÎļþ£¬JDK1
.1¾Í¿É¡£
¸½£ºsoundtest.htmlÔ´´úÂë
¡¶HTML¡·
¡¶HEAD¡·
¡¶TITLE¡·
HTML Test Page
¡¶/TITLE¡·
¡¶/HEAD¡·
¡¶BODY¡·
¡¶APPLET
CODEBASE = "" CODE = "test.class" NAME = "TestApplet" WID
TH = 400 HEIGHT = 200 HSPACE = 0 VSPACE = 0 ALIGN = mi
ddle¡·
¡¶PARAM NAME = "clip" VALUE = "sound.AU"¡·
¡¶/APPLET¡·
¡¶/BODY¡·
¡¶/HTML¡·
¸½£ºtest,javaÔ´´úÂë
package SoundTest;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import java.net.*;
public class test extends JApplet {
boolean isStandalone = false;
String sound;
JButton jButtonPlay = new JButton();
JButton jButtonLoop = new JButton();
JButton jButtonStop = new JButton();
JLabel jLabel1 = new JLabel();
AudioClip clip;
//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}
//Construct the applet
public test() {
}
//Initialize the applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
jButtonPlay.setText("Play");
jButtonPlay.setBounds(new Rectangle(50, 85, 80, 40));
jButtonPlay.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
jButtonPlay_mouseClicked(e);
}
});
this.setSize(new Dimension(400,200));
this.getContentPane().setLayout(null);
jButtonLoop.setText("Loop");
jButtonLoop.setBounds(new Rectangle(150, 85, 80, 40));
jButtonLoop.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
jButtonLoop_mouseClicked(e);
}
});
jButtonStop.setText("Stop");
jButtonStop.setBounds(new Rectangle(250, 85, 80, 40));
jButtonStop.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
jButtonStop_mouseClicked(e);
}
});
jLabel1.setText("Sound Test Demo");
jLabel1.setBounds(new Rectangle(109, 28, 186, 28));
this.getContentPane().add(jButtonPlay, null);
this.getContentPane().add(jButtonStop, null);
this.getContentPane().add(jButtonLoop, null);
this.getContentPane().add(jLabel1, null);
try { sound = this.getParameter("clip", "sound.AU"); } catch (Exce
ption e) { e.printStackTrace(); }
if(sound!=null){
try{
clip=JApplet.newAudioClip (new URL(getCodeBase(),sound));
}
catch(MalformedURLException e){
System.out.println ("Bad URL");
}
}
}
//Get Applet information
public String getAppletInfo() {
return "Applet Information";
}
//Get parameter info
public String[][] getParameterInfo() {
String[][] pinfo =
{
{"clip", "String", "sound.AU"},
};
return pinfo;
}
void jButtonPlay_mouseClicked(MouseEvent e) {
clip.play();
}
void jButtonLoop_mouseClicked(MouseEvent e) {
clip.loop();
}
void jButtonStop_mouseClicked(MouseEvent e) {
clip.stop();
}
}
´¦Àí·½°¸¶þ
¡¡¡¡ÀûÓÃJAVAýÌå¿ò¼ÜÖеÄSound APIÀ´´¦ÀíÉùÒôƬ¶Ï¡£Sound API ±»°üº¬ÔÚSUN¹«Ë¾µÄJAVAýÌå¿ò¼ÜÖУ¬Ò²°üº¬ÔÚJDK1.3°æ±¾ÖС£±àÒëÔ´´úÂëÐèÒªÖ§³ÖJDK1.3µÄ¿ª·¢»·¾³ºÍÔËÐÐʱ¼ä»·¾³¡£
¡¡¡¡¿ÉÒÔÀûÓÃSound APIÔÚÍøÒ³ÖмÓÈëAppletµÄ·½Ê½´ïµ½ÒªÇó¡£µ«ä¯ÀÀÆ÷ÐèҪͨ¹ýJava²å¼þ»òÔËÐÐʱ¼ä»·¾³µÄÖ§³Ö¡£
Sound APIÖ÷Òª°üÀ¨ÒÔÏÂËIJ¿·Ö£º
Packages
javax.sound.midi ÌṩMIDI (Musical Instrument Digital Interface)µÄI/O¡¢
ÐòÁС¢ºÏ³ÉµÄ½Ó¿ÚºÍÀà¡£
javax.sound.midi.spi Supplies interfaces for service providers to impl
ement when offering new MIDI devices, MIDI file readers and writers, o
r sound bank readers.
javax.sound.sampled Ϊ²ÉÑùÊý×ÖÒôƵµÄ²¶»ñ¡¢´¦Àí¡¢ÖØ·ÅÌṩ½Ó¿ÚºÍÀà¡£
javax.sound.sampled.spi Supplies abstract classes for service provider
s to subclass when offering new audio devices, sound file readers and
writers, or audio format converters.
´¦Àí·½°¸Èý
¡¡¡¡ÀûÓÃJAVA 3DÖеÄsoundÀà¡£¸ÃÀàËÆÉùÒô×ÊÔ´µÄ³éÏó¶¨Ò塣ÿһ¸ö¾ßÌåµÄÉùÒô¶ÔÏ󶼿ÉÒÔÓ¦ÓÃsoundµÄ·½·¨¡£
SoundÀàµÄÀà¹ØÏµÈçÏ£º
java.lang.Object
+-javax.media.j3d.SceneGraphObject
+-javax.media.j3d.Node
+-javax.media.j3d.Leaf
+-javax.media.j3d.Sound
soundÀàµÄ×ÓÀàÓУº
¢±BackgroundSound
¢²PointSound
¢³ConeSound
ʹÓÃÉÏÊöÈýÖÖÉùÒôµÄ²½ÖèÈçÏ£º
¢±¶¨Òå²¢Éú³ÉÒ»¸öMediaContainer¶ÔÏó£¬Í¬Ê±Ìṩ¶ÔÏóËùÐèÒªµÄÉùÒôÎļþ£¬Í¨³£
Òªµ¥¶ÀÉèÖÃÒ»¸ö´æ·ÅAU/WAVÉùÒôÎļþµÄĿ¼¡£
¢²¶¨ÒåÒ»¸öBackgroundSound/ PointSound/ ConeSound¶ÔÏ󣬸ù¾ÝÐèÒª£¬ÉèÖÃÉù
ÒôµÄÊÇ·ñÑ»·¡¢Ç¿¶È´óСµÈ²ÎÊý£¬ÉèÖÃËüµÄ×÷Ó÷¶Î§²¢setEnableÓÃʹÆä¿ªÊ¼×÷Óá£
¢³¸ù¾Ý¾ßÌåµÄ¶ÔÏóÉèÖÃ×ø±êϵ¡£
££JAVA 3DÓ¦ÓóÌÐòÖ»Äܲ¥·Åau/wav¸ñʽµÄÉùÒôÎļþ¡£²»Äܲ¥·ÅmidiÎļþ
5 07, 2007
JavaScripÔ´Âë:ͼÏóƮѩԴúÂë(ת)
<!-- Begin
var no = 5; // snow number
var speed = 1; // smaller number moves the snow faster
var snowflake = "fl.gif";
var ns4up = (document.layers) ? 1 : 0; // browser sniffer
var ie4up = (document.all) ? 1 : 0;
var dx, xp, yp; // coordinate and position variables
var am, stx, sty; // amplitude and step variables
var i, doc_width = 800, doc_height = 600;
if (ns4up) {
doc_width = self.innerWidth;
doc_height = self.innerHeight;
} else if (ie4up) {
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
}
dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();
for (i = 0; i < no; ++ i) {
dx[i] = 0; // set coordinate variables
xp[i] = Math.random()*(doc_width-50); // set position variables
yp[i] = Math.random()*doc_height;
am[i] = Math.random()*20; // set amplitude variables
stx[i] = 0.02 + Math.random()/10; // set step variables
sty[i] = 0.7 + Math.random(); // set step variables
if (ns4up) { // set layers
if (i == 0) {
document.write("<layer name="dot"+ i +"" left="15" ");
document.write("top="15" visibility="show"><img src="");
document.write(snowflake + "" border="0"></layer>");
} else {
document.write("<layer name="dot"+ i +"" left="15" ");
document.write("top="15" visibility="show"><img src="");
document.write(snowflake + "" border="0"></layer>");
}
} else if (ie4up) {
if (i == 0) {
document.write("<div id="dot"+ i +"" style="POSITION: ");
document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");
document.write("visible; TOP: 15px; LEFT: 15px;"><img src="");
document.write(snowflake + "" border="0"></div>");
} else {
document.write("<div id="dot"+ i +"" style="POSITION: ");
document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");
document.write("visible; TOP: 15px; LEFT: 15px;"><img src="");
document.write(snowflake + "" border="0"></div>");
}
}
}
function snowNS() { // Netscape main animation function
for (i = 0; i < no; ++ i) { // iterate for every dot
yp[i] += sty[i];
if (yp[i] > doc_height-50) {
xp[i] = Math.random()*(doc_width-am[i]-30);
yp[i] = 0;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
doc_width = self.innerWidth;
doc_height = self.innerHeight;
}
dx[i] += stx[i];
document.layers["dot"+i].top = yp[i];
document.layers["dot"+i].left = xp[i] + am[i]*Math.sin(dx[i]);
}
setTimeout("snowNS()", speed);
}
function snowIE() { // IE main animation function
for (i = 0; i < no; ++ i) { // iterate for every dot
yp[i] += sty[i];
if (yp[i] > doc_height-50) {
xp[i] = Math.random()*(doc_width-am[i]-30);
yp[i] = 0;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
}
dx[i] += stx[i];
document.all["dot"+i].style.pixelTop = yp[i];
document.all["dot"+i].style.pixelLeft = xp[i] + am[i]*Math.sin(dx[i]);
}
setTimeout("snowIE()", speed);
}
if (ns4up) {
snowNS();
} else if (ie4up) {
snowIE();
}
// End -->
</script>
5 07, 2007
ÓÃServlets¶¯Ì¬Éú³ÉͼƬ(ת)
¡¡¡¡Èç¹ûÄãµÄ servlet Òª¶¯Ì¬Éú³ÉͼÏó£¬Ê×ÏÈÄãÐèÒª image I/O£¬Ã÷È·µÄ˵£¬ÄãÐèÒªÉú³ÉһͼƬÀ´ÏìÓ¦HTTPÇëÇ󡣺ËÐÄ Java API ûÓÐÖ±½ÓÌṩÓÃÓÚ±£³ÖÈκÎͼÏóµÄ¹¦ÄÜ¡£È»¶ø£¬Äã¿ÉÒÔÓà Sun µÄ Java 1.1 Àà¿âÀ´×ö image I/O¡£¶øÇÒ Sun µÄ 1.2 °æµÄ image I/O ÌṩÁË¶Ô JPEG ͼÏó½øÐбàÂëºÍ½âÂëµÄ°ü¡£ÒòΪÕâЩ´úÂëÔÚ com.sun °üÖУ¬²»ÊǺËÐÄAPIµÄÒ»²¿·Ö£¬Ò²²»ÊDZê×¼µÄÀ©Õ¹°ü£¬Òò´Ë£¬»áÓ°Ïì´úÂëµÄ¿ÉÒÆÖ²ÐÔ¡£
¡¡¡¡Ê¹Óà jdk 1.2 ½«±È jdk 1.1 °æÈÝÒ׵Ķ࣬±¾ÎĽéÉÜ jdk 1.2 ϵÄʵÏÖ·½·¨¡£Ê¾ÀýÓÐÈý¸ö²½Ö裺´´½¨¡¢»æÖÆ¡¢±£´æ¡£ÔÚ±¾Àý½ö½öʾ·¶ÈçºÎ»Ò»¸öÍÖÔ²£¬µ±È»Äã¿ÉÒÔ¸ù¾ÝÄãµÄÐèÒªÐ޸ġ£Àý×ÓʹÓÃÁË com.sun.image.codec.jpeg °üÉú³É JPEG Îļþ¡£Èç¹ûÒªÉú³É GIF Îļþ£¬Äã¿ÉÒÔʹÓõÚÈý·½µÄ°ü£¬Èç Acme Labs µÄ GIF Encoder¡£
1. ʹÓÃÊʵ±µÄ³ß´ç´´½¨Ò»¸ö BufferedImage ¶ÔÏó£º
BufferedImage
¡¡image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
2. ÔÚ image ¶ÔÏóÉÏ»æÖÆÄãÏëÒªµÄͼÏó¡£¼ÙÉèÄãÏëÒªÒ»¸ö°×É«µÄ±³¾°£¬ÄãÐèÒª»Ò»¸ö°×É«Ìî³äµÄ¾ØÐΡ£·ñÔò±³¾°½«ÊÇȱʡµÄºÚÉ«£º
¡¡Graphics g = image.getGraphics();
¡¡¡¡g.setColor(Color.white);
¡¡¡¡g.fillRect(0,0, width, height);
¡¡¡¡g.setColor(Color.red);
¡¡¡¡g.drawOval(0, 0, width, height);
3. ʹÓà com.sun.image.codec.jpeg °üÊä³ö BufferedImage£º
¡¡response.setContentType(¡±image/jpeg¡±);
¡¡ServletOutputStream out = response.getOutputStream(); ¡¡
¡¡JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
¡¡encoder.encode(image);
¡¡out.close();¡¡
5 07, 2007
ÔÚ Java Ó¦ÓóÌÐòÖд´½¨Í¼Ïñ(ת)
int width = 200;
int height = 300;
BufferedImage image = new BufferedImage(width,
height,BufferedImage.TYPE_INT_ARGB);
Õâ¶Î´úÂë´´½¨ÁËÒ»¸ö BufferedImage ¶ÔÏó£¬Ëü´ú±íÒ»¸ö 200 ÏñËØ¿í¡¢300 ÏñËØ¸ßµÄͼÏñ¡£ÎªÁËÓ¦ÓÃÕâ¸öͼÏñ£¬ÎÒÃÇÐèÒªÓÐͼÐÎÉÏÏÂÎÄ£¬¶ø BufferedImage ¶ÔÏóµÄ createGraphics() ·½·¨¾Í·µ»ØÒ»¸öÓë¸ÃͼÏñÏà¹ØµÄ Graphics2D ¶ÔÏó£º
int width = 200;
Graphics2D g2D = image.createGraphics();
ʹÓà g2D ¶ÔÏóµÄ²Ù×÷»áÐÞ¸Ä BufferedImage ¶ÔÏó image µÄÏñËØ¡£ÀûÓÃÕâ¸ö¶ÔÏó£¬ÄúÏÖÔÚÍêÈ«ÓÐÄÜÁ¦Ó¦Óà BufferedImage ¶ÔÏó¡£Äú¿ÉÒÔ»æÖÆÐÎ×´¡¢Í¼Ïñ¡¢GeneralPath ¶ÔÏó»òÈκαðµÄ¶«Î÷£¬»¹¿ÉÒÔΪͼÐÎÉÏÏÂÎÄÉèÖà alpha ×éºÏ¶ÔÏó¡£Äúͬʱ»¹ÓµÓÐ Graphics2D ¶ÔÏóÌṩµÄÈ«²¿·ÂÉä±äÐÎÄÜÁ¦¡£
Èç¹ûÒª´Ó BufferedImage ¶ÔÏó»ñÈ¡µ¥¸öÏñËØ£¬¿ÉÒÔͨ¹ýµ÷ÓÃËüµÄ getRGB() ·½·¨£¬²¢Ìṩ¸ÃÏñËØµÄ x,y ×ø±ê×÷Ϊ int ÀàÐ͵IJÎÊý¡£Õâ¸öÏñËØ»á°´ TYPE_INT_ARGB ¸ñʽÒÔ int ÀàÐÍ·µ»Ø£¬ËüÓÉËĸö 8 λµÄÖµ£¨´ú±í alpha ÖµºÍ RGB ÑÕÉ«×é¼þ£©×é³ÉÒ»¸ö 32 λ×Ö¡£Í¬Ê± getRGB() »¹ÓÐÒ»¸öÖØÔØµÄ°æ±¾£¬Ëü´ÓÒ»²¿·ÖͼÏñÊý¾ÝÖзµ»ØÒ»¸öÏñËØÊý×é¡£ÄúÒ²¿ÉÒÔͨ¹ýµ÷Óà setRGB() ·½·¨À´ÉèÖõ¥¸öÏñËØ¡£Ç°Á½¸ö²ÎÊýÊǸÃÏñËØµÄ×ø±êÖµ£¬µÚÈý¸ö²ÎÊýÊÇ´ýÉ趨µÄÖµ£¬ÀàÐÍΪ int¡£Õâ¸ö·½·¨Ò²ÓÐÒ»¸ö°æ±¾¿ÉÒÔÉèÖÃÏñËØÊý×éµÄÖµ¡£
ÖÁ´ËÎÒÃÇÒѾÍê³ÉÁËÏñËØ²Ù×÷µÄѧϰ¡£ÏÂÃæÎÒÃÇÒª½¨Á¢Ò»¸ö applet£¬ËüÔÚ Wrox »Õ±ê±³¾°ÉÏʹ BufferedImage ¶ÔÏó¾ßÓж¯»Ð§¹û¡£ÎÒÃǵÄʾÀý»¹½«ÑÝʾÔõÑùÄÜÈÃͼÏñ¾Ö²¿Í¸Ã÷¡£applet µÄ»ù±¾ÄÚÈÝÈçÏÂËùʾ£º
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import javax.swing.*;
public class ImageDrawDemo extends JApplet
{
// The init() method to initialize everything...
// The start() method to start the animation...
// The stop() method to stop the animation...
// The ImagePanel class defining the panel displaying the animation...
// Data members for the applet...
}
´´½¨Ò»¸öͼÏñ
Ò»¸ö×ÓͼÐÎÊÇÒ»¸öСµÄͼÐÎͼÏñ£¬¿ÉÒÔ½«Æä»æÖÆÔÚ¾²Ì¬Í¼ÏñÒÔ´´½¨¶¯»¡£Òª´´½¨¶¯»Ð§¹û£¬ÄúÖ»ÒªËæ×Åʱ¼äÍÆÒÆ£¬ÔÚ²»Í¬µÄλÖúͷ½ÏòÉÏ»æÖÆ×ÓͼÐΡ£µ±È»£¬ÀûÓÃ×ø±êϵµÄ±äÐοÉÒÔʹ֮¼ò»¯Ðí¶à¡£ÓÎÏ·¾³£Ê¹ÓÃ×ÓͼÐÎ ? ÓÉÓÚÄúÖ»ÐèÒªÔÚÒ»¸ö¾²Ì¬±³¾°ÉÏ»æÖÆ×ÓͼÐΣ¬ËùÒÔ¿ÉÒÔʹ¶¯»ËùÕ¼ÓõĴ¦ÀíÆ÷µÄʱ¼ä´ó´ó¼õÉÙ¡£ÎÒÃǶÔʹÓà BufferedImage ¶ÔÏóµÄÐËȤÒâζ×ÅÎÒÃǽ«²»ÔÙ»¨·Ñ¾«Á¦È¥Ñо¿¼õÉÙ´¦ÀíÆ÷ʱ¼äµÄ×î¼Ñ¼¼Êõ£¬¶øÊǰÑ×¢ÒâÁ¦·ÅÔÚÀí½âÔõÑù²ÅÄÜÔÚÒ»¸ö³ÌÐòÄÚ²¿´´½¨ºÍʹÓÃͼÏñÉÏ¡£
ÎÒÃÇµÄ BufferedImage ¶ÔÏó¿´ÉÏÈ¥Èçͼ 1 ÖеÄͼÏñ£º
ͼ 1. BufferedImage ×ÓͼÐÎ
Õâ¸öͼÏñÊÇÒ»¸öÒÔ spriteSize Ϊ±ß³¤µÄÕý·½ÐΡ£Í¼ÏñÆäËü²¿·ÖµÄ³ß´çÖµ¶¼ÓëÕâ¸ö±ß³¤Ïà¹Ø¡£Êµ¼ÊÉÏÕâÀïÖ»ÓÐÁ½¸ö¼¸ºÎʵÌ壬һÌõÏߺÍÒ»¸öÔ²£¬¶¼ÔÚ²»Í¬Î»Öúͷ½ÏòÖØ¸´³öÏÖ¡£Èç¹ûÎÒÃÇ´´½¨Ò»¸ö Line2D.Double ¶ÔÏó´ú±íÏߣ¬´´½¨Ò»¸ö Ellipse2D.Double ¶ÔÏó´ú±íÔ²£¬ÄÇôÎÒÃǾͿÉÒÔͨ¹ýÒÆ¶¯Óû§×ø±êϵºÍ»ÕâÁ½¸ö¶ÔÏóÖеÄÒ»¸ö»òÆäËüµÄ¶ÔÏó¶ø»³öÕû¸öͼÏñ¡£
Èç¹ûÊǰ´ÕæÕýÃæÏò¶ÔÏóµÄ·½·¨£¬Ó¦¸Ã¶¨ÒåÒ»¸öÀà´ú±íÒ»¸ö×ÓͼÐΣ¬¿ÉÄÜÊÇ×÷Ϊ BufferedImage µÄÒ»¸ö×ÓÀ࣬µ«ÓÉÓÚÎÒÃÇÊÇÔÚ̽Ë÷ʹÓà BufferedImage ¶ÔÏóµÄ¼¼ÇÉ£¬Òò´ËÓÃÒ»¸ö createSprite() ·½·¨À´»³ö BufferedImage ¶ÔÏóÉϵÄ×ÓͼÐλá¸üÊʺÏÎÒÃǵÄÄ¿µÄ¡£ÒòΪ¸Ã·½·¨Ö»ÊÇÎÒÃÇµÄ applet ÀàµÄÒ»¸ö³ÉÔ±£¬ËùÒÔÎÒÃǽ«Îª applet Ìí¼ÓÊý¾Ý³ÉÔ±ÒÔ´æ´¢ÈκÎÐèÒªµÄÊý¾Ý¡£Äú¿ÉÒÔ°ÑÎÒÃǽ«Ê¹ÓõÄÊý¾Ý³ÉÔ±²åÈëµ½ applet ÀàÖУ¬ÈçÏÂËùʾ£º
double totalAngle; // Current angular position of sprite
double spriteAngle; // Rotation angle of sprite about its center
ImagePanel imagePanel; // Panel to display animation
BufferedImage sprite; // Stores reference to the sprite
int spriteSize = 100; // Diameter of the sprite
Ellipse2D.Double circle; // A circle - part of the sprite
Line2D.Double line; // A line - part of the sprite
// Colors used in sprite
Color[] colors = {Color.red , Color.yellow, Color.green , Color.blue,
Color.cyan, Color.pink , Color.magenta, Color.orange};
java.util.Timer timer; // Timer for the animation
long interval = 50; // Time interval msec between repaints
ÕâЩ³ÉÔ±µÄÒ»°ãÓÃ;¿ÉÒÔ´Ó×¢ÊÍÖÐÇå³þµØ¿´µ½¡£ÏÂÃæÎÒÃÇÒª¿´Ò»¿´¿ª·¢´úÂëʱËüÃÇÊÇÔõÑù±»Ê¹Óõġ£
createSprite() ·½·¨ÐèÒª×öµÄµÚÒ»¼þʾÍÊÇ´´½¨ BufferedImage ¶ÔÏó sprite£¬È»ºóÎÒÃÇ»¹ÐèÒªÒ»¸ö Graphics2D ¶ÔÏóÓÃÓÚÔÚ sprite ͼÏñÉϻ满£ÏÂÃæ¾ÍÊÇÍê³ÉÕâЩ²Ù×÷µÄ´úÂ룺
BufferedImage createSprite(int spriteSize)
{
// Create image with RGB and alpha channel
BufferedImage sprite = new BufferedImage(spriteSize, spriteSize,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2D = sprite.createGraphics(); // Context for buffered image
// plus the rest of the method...
}
sprite ¶ÔÏóµÄ¿íºÍ¸ßµÄÖµ¶¼ÊÇ spriteSize£¬Í¼ÏñµÄÀàÐÍΪ TYPE_INT_ARGB£¬¾ÍÊÇ˵ÿ¸öÏñËØµÄ alpha ÖµºÍÑÕÉ«×é¼þÊÇÒÔÒ»¸öµ¥¶ÀµÄ int Öµ´æ´¢µÄ£¬¶øÑÕÉ«ÊÇÒÔ 8 λµÄºì¡¢ÂÌ¡¢À¶×é¼þµÄÐÎʽ´æ´¢µÄ¡£ÕâÒâζ×ÅÎÒÃÇµÄ sprite ͼÏñ½«Õ¼Óà 40,000 ×Ö½Ú£¬ÕâÖ»ÊÇä¯ÀÀÒ»¸öÍøÒ³»áÕ¼ÓõÄÄÚ´æµÄºÜСһ²¿·Ö¡£¶øÕâ²¢²»Ó°ÏìÍøÒ³µÄÏÂÔØÊ±¼ä£¬ÒòΪÔÚÖ´ÐÐ applet µÄʱºò£¬Õⲿ·ÖÄÚ´æÊÇÔÚ±¾µØ»úÆ÷Éϱ»·ÖÅäµÄ¡£³ýÁË×÷ÎªÍøÒ³±¾ÉíµÄ HTML ÎļþµÄÄÚÈÝÍ⣬ÏÂÔØÊ±¼ä»¹È¡¾öÓÚ applet µÄ .class ÎļþµÄ´óС£¬ÒÔ¼°ÔÚËüÖ´ÐÐʱÏÂÔØµÄͼÏñ»òÆäËüÎļþ¡£
´´½¨Ò»¸ö͸Ã÷µÄ±³¾°
ÔÚ sprite ͼÏñÖУ¬alpha ͨµÀÊǺÜÖØÒªµÄ£¬ÒòΪÎÒÃÇÏ£Íû±³¾°ÄÜÍêȫ͸Ã÷¡£Ôڻ滹ý³ÌÖУ¬Ö»ÓÐ sprite ¶ÔÏó±¾ÉíÓ¦¸ÃÊǿɼûµÄ£¬¶ø²»ÊÇÕû¸ö 100¡Á100 µÄ¾ØÐÎͼÏñ¡£ÎÒÃÇ¿ÉÒÔºÜÈÝÒ×µØÊµÏÖÕâһĿµÄ£¬Ö»Òª¿ªÊ¼ÏÈʹÕû¸ö sprite ͼÏñÇøÓò͸Ã÷£¨¼´£¬alpha ֵΪ 0.0f£©£¬È»ºó°ÑÎÒÃÇÏëÒª»µÄͼÐλæÖÆÔÚÉÏÃæ£¬Ê¹Ö®²»Í¸Ã÷£¨alpha ֵΪ 1.0f£©¡£ÒÔÏÂÊÇʹÕû¸öͼÏñ͸Ã÷µÄ´úÂ룺
// Clear image with transparent alpha by drawing a rectangle
g2D.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f));
Rectangle2D.Double rect = new Rectangle2D.Double(0,0,spriteSize,spriteSize);
g2D.fill(rect);
ÎÒÃÇÊ×ÏÈʹÓà AlphaComposite ¶ÔÏó°´ÕÕ CLEAR ¹æÔòÉèÖà alpha ºÏ³ÉÖµ£¬°ÑÑÕÉ«×é¼þÉèÖÃΪÁ㣬ÓÖͨ¹ýÉèÖà alpha ֵΪ 0.0f£¬Ê¹Ö®Í¸Ã÷¡£È»ºóÎÒÃÇÌî³äÒ»¸ö¸²¸ÇÕû¸öͼÏñÇøÓòµÄ¾ØÐΡ£ÎÒÃDz»±ØÉèÖÃÑÕɫֵ£¬ÒòΪ¸ù¾Ý CLEAR ¹æÔò£¬Ã¿¸öÏñËØµÄǰ¾°ºÍ±³¾°É«ËùÕ¼³É·Ö¶¼ÊÇÁ㣬ËùÒÔÕâÁ½Õß¶¼²»²ÎÓëÏñËØµÄÉú³É¡£µ«ÎÒÃÇÈÔÒªÌî³ä¸Ã¾ØÐΣ¬ÒòΪÕ⽫ȷ¶¨±»²Ù×÷µÄͼÏñÏñËØ¡£
ÕâÀÎÒÃÇ¿ÉÒÔÉÔ΢Á˽âÒ»ÏÂÔõÑù¿ØÖÆÍ¼ÏñµÄÖÊÁ¿¡£
×Åɫ΢µ÷
¶Ô×ÅÉ«²Ù×÷µÄÐí¶à·½Ãæ¶øÑÔ£¬¶¼ÓÐÒ»¸öÔÚÖÊÁ¿ºÍËٶȼäÑ¡ÔñµÄÎÊÌâ¡£×ÅÉ«²Ù×÷¾ÍÏñ´ó¶àÊýÊÂÇéÒ»Ñù ? ÖÊÁ¿ÊÇÐèÒª´ú¼ÛµÄ£¬¶øÕâÀïµÄ´ú¼Û¾ÍÊÇ´¦Àíʱ¼ä¡£ËùÓеÄ×ÅÉ«²Ù×÷¶¼ÓÐȱʡÉèÖã¬ÆäÖдæÔÚÒ»¸öÑ¡Ôñ£¬È±Ê¡ÉèÖÃÊÇÌØ¶¨ÓÚÆ½Ì¨µÄ£¬µ«Äú¿ÉÒÔͨ¹ýµ÷ÓÃÓÃÓÚ×ÅÉ«µÄ Graphics2D ¶ÔÏóµÄ setRenderingHint() ·½·¨×Ô¼ºÑ¡Ôñ¡£ËäȻֻÓÐһЩ΢µ÷£¬Èç¹ûÄúµÄ¼ÆËã»ú²»Ö§³ÖÓëÄúÖ¸¶¨µÄ΢µ÷Ïà¶ÔÓ¦µÄ×ÅÉ«²Ù×÷Ñ¡ÏÕâЩ΢µ÷¾ÍÎÞ·¨ÉúЧ¡£
ͨ¹ýÌí¼ÓÒÔÏÂ¶Ô createSprite() ·½·¨µÄµ÷Ó㬿ÉÒÔÈ·±£µÃµ½ÓÉÎÒÃÇµÄ alpha ºÏ³É²Ù×÷¿ÉÄÜÉú³ÉµÄ×îºÃЧ¹û¡£
BufferedImage createSprite(int spriteSize)
{
// Create image with RGB and alpha channel
BufferedImage sprite = new BufferedImage(spriteSize, spriteSize,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2D = sprite.createGraphics(); // Context for buffered image
// Set best alpha interpolation quality
g2D.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
// Clear image with transparent alpha by drawing a rectangle
g2D.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f));
Rectangle2D.Double rect = new Rectangle2D.Double(0,0,spriteSize,spriteSize);
g2D.fill(rect);
// plus the rest of the method...
}
RenderingHints ÀඨÒåÁ˶àÖÖ×Åɫ΢µ÷£¬ËüÃÇ´æ´¢ÔÚÒ»¸öÓ³É伯µÄ Graphics2D ¶ÔÏóÀï¡£setRenderingHint() ·½·¨µÄ²ÎÊýÊÇÒ»¸ö¼üÒÔ¼°¶ÔÓ¦µÄ¼üÖµ¡£ÔÚÎÒÃǵĴúÂëÖУ¬µÚÒ»¸ö²ÎÊýÊÇ´ú±í alpha ºÏ³É΢µ÷µÄ¼ü£¬µÚ¶þ¸ö²ÎÊýÊǸÃ΢µ÷µÄÖµ¡£¸Ã΢µ÷µÄÆäËü¿ÉÄܵÄÖµÓÐ VALUE_ALPHA_INTERPOLATION_DEFAULT£¬´ú±íƽ̨ȱʡֵ£»ÒÔ¼° VALUE_ALPHA_INTERPOLATION_SPEED£¬´ú±í×·ÇóËٶȶø²»ÊÇÖÊÁ¿¡£
Äú»¹¿ÉÒÔΪÏÂÃæµÄ¼üÌṩ΢µ÷£º
¼ü ÃèÊö
KEY_ANTIALIASING ¾ö¶¨ÊÇ·ñʹÓÿ¹¾â³Ý¡£µ±×ÅÉ«ÓÐÇãб½Ç¶ÈµÄÏßʱ£¬Í¨³£»áµÃµ½Ò»×é½×ÌÝʽµÄÏñËØÅÅÁУ¬Ê¹ÕâÌõÏß¿´ÉÏÈ¥²»Æ½»¬£¬¾³£±»³ÆÎª ¾â³Ý״ͼÐΡ£¿¹¾â³ÝÊÇÒ»ÖÖ¼¼Êõ£¬ËüÉèÖÃÓÐÇãб½Ç¶ÈµÄÏßµÄÏñËØÁÁ¶È£¬ÒÔʹÏß¿´ÆðÀ´¸üƽ»¬¡£Òò´Ë£¬Õâ¸ö΢µ÷ÊÇÓÃÀ´¾ö¶¨ÔÚ×ÅÉ«ÓÐÇãб½Ç¶ÈµÄÏßʱÊÇ·ñÔÚ¼õÉÙ¾â³Ý״ͼÐÎÉÏ»¨·Ñʱ¼ä¡£¿ÉÄܵÄÖµÓÐ VALUE_ANTIALIAS_ON, _OFF »ò _DEFAULT¡£
KEY_COLOR_RENDERING ¿ØÖÆÑÕÉ«×ÅÉ«µÄ·½Ê½¡£¿ÉÄܵÄÖµÓÐ VALUE_COLOR_RENDER_SPEED, _QUALITY »ò _DEFAULT¡£
KEY_DITHERING ¿ØÖÆÈçºÎ´¦Àí¶¶¶¯¡£¶¶¶¯ÊÇÓÃÒ»×éÓÐÏÞµÄÑÕÉ«ºÏ³É³öÒ»¸ö¸ü´ó·¶Î§µÄÑÕÉ«µÄ¹ý³Ì£¬·½·¨ÊǸøÏàÁÚÏñËØ×ÅÉ«ÒÔ²úÉú²»ÔÚ¸Ã×éÑÕÉ«ÖеÄеÄÑÕÉ«»Ã¾õ¡£¿ÉÄܵÄÖµÓÐ VALUE_DITHER_ENABLE, _DISABLE »ò _DEFAULT¡£
KEY_FRACTIONALMETRICS ¿ØÖÆÏÔʾÎı¾µÄÖÊÁ¿¡£¿ÉÄܵÄÖµÓÐ VALUE_FRACTIONALMETRICS_ON, _OFF »ò _DEFAULT¡£
KEY_INTERPOLATION È·¶¨ÔõÑù×öÄڲ塣
ÔÚ¶ÔÒ»¸öԴͼÏñ×ö±äÐÎʱ£¬±äÐκóµÄÏñËØºÜÉÙÄܹ»Ç¡ºÃ¶ÔӦĿ±êÏñËØÎ»Öá£ÔÚÕâÖÖÇé¿öÏ£¬Ã¿¸ö±äÐκóµÄÏñËØµÄÑÕɫֵ²»µÃ²»ÓÉÖÜΧµÄÏñËØ¾ö¶¨¡£
ÄÚ²å¾ÍÊÇʵÏÖÉÏÊö¹ý³Ì¡£ÓÐÐí¶à¿ÉÓõļ¼Êõ¡£¿ÉÄܵÄÖµ£¬°´´¦Àíʱ¼ä´Ó×î¶àµ½×îÉÙ£¬ÊÇ VALUE_INTERPOLATION_BICUBIC, _BILINEAR »ò _NEAREST_NEIGHBOR¡£
KEY_RENDERING È·¶¨×ÅÉ«¼¼Êõ£¬ÔÚËٶȺÍÖÊÁ¿Ö®¼ä½øÐÐȨºâ¡£¿ÉÄܵÄÖµÓÐ VALUE_RENDERING_SPEED, _QUALITY »ò _DEFAULT¡£
KEY_TEXT_ANTIALIASING È·¶¨¶ÔÎı¾×ÅɫʱÊÇ·ñ¿¹¾â³Ý¡£¿ÉÄܵÄÖµÓÐ VALUE_TEXT_ANTIALIASING_ON, _OFF »ò _DEFAULT¡£
ÎÒÃÇÈÆµÃÒѾ¹»Ô¶ÁË¡£ÈÃÎÒÃǻص½»æÖÆ sprite ÉÏ¡¡
5 07, 2007
СÒéÈçºÎÔÚApplicationÖÐÏÔʾͼÏó(ת)
ÕâÀïÎÒ·¢ÏÖÁËÒ»¸ö½ÌΪ¼òµ¥µÄ°ì·¨£¬¾ÍÊÇÓÃgetImage()·½·¨À´´ÓÒ»¸ö ImageIcon ¶ÔÏó»ñÈ¡ Image ¶ÔÏó¡£
¾ßÌå×ö·¨ÈçÏ£º
//»ñȡͼÏóÎļþ·¾¶
//getResource()·½·¨»á×Ô¶¯µÄÈ¥CLASSPATHÖÐÕÒÄãµÄͼÏóÎļþ£¬ÕⲻʧΪһÖкõİ취
//¼´Ê¹ÄãµÄͼÏóÎļþÔÚjar°üÖУ¬ÎÒÃÇÒ²¿ÉÒÔºÜÇáÒ×µÄÕÒµ½Ëü
URL imgURL = getClass().getResource("img/test.gif");
//½¨Á¢ImageIcon Àà
ImageIcon icon = new ImageIcon(imgURL);
//ÓÉiconµÃµ½img
Image img = icon.getImage();
ÕâÑùÒ»À´£¬°ÑÎÒÉÏһƪÎÄÕÂ<СÒéÈçºÎÔÚ Applet ÖÐÏÔʾͼÏó>µÄ´úÂëÉÔ΢¸Ä¶¯Ò»µã¾Í¿ÉÒÔÔÚapplicationÖÐÏÔʾ
ͼÏóÁË£¬Á¬¸½Àý³ÌÈçÏ£º
import javax.swing.*;
import java.awt.*;
import java.net.URL;
import java.awt.image.*;
public class MyFrame extends JFrame {
int xpoint = 100, ypoint = 100;
public MyFrame() {
//Do frame stuff.
super("MyFrame");
}
public void paint(Graphics g) {
URL imgURL = getClass().getResource("img/test.gif");
ImageIcon icon = new ImageIcon(imgURL);
g.drawImage(icon.getImage(),xpoint,ypoint,this);
}
// main function
public static void main(String[] args) {
MyFrame frame = new MyFrame();
frame.pack();
frame.setVisible(true);
}
}
¡¡
5 07, 2007
²¶»ñµ±Ç°ÆÁĻͼÏñ(ת)
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
class ImageCanvas extends Canvas{
private Image image;
private Dimension prefSize;
public ImageCanvas(Image image){
this.image = image;
calculatePreferredSize();
}
public void setImage(Image image){
this.image = image;
calculatePreferredSize();
repaint();
}
private void calculatePreferredSize(){
prefSize = new Dimension(image.getWidth(this),image.getHeight(this));
System.out.println(image.getWidth(this));
setSize(prefSize);
}
public Dimension getPreferredSize() {
return prefSize;
}
public Dimension getMinimumSize() {
return prefSize;
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
g.drawImage(image,0,0,null);
}
}
class ImageUtils{
public static Image getScreenImage(){
Robot robot;
try {
robot = new Robot();
}catch(Exception e) {
throw new RuntimeException("unable to construct Robot");
}
Dimension screenDims =Toolkit.getDefaultToolkit().getScreenSize();
Image screen =robot.createScreenCapture(new Rectangle(450,350,screenDims.width,screenDims.height)).getScaledInstance(400,300,Image.SCALE_SMOOTH);
MediaTracker tracker =new MediaTracker(new Label());
tracker.addImage(screen,1);
try {
tracker.waitForID(0);
}catch(InterruptedException e) { /** ... */ }
return screen;
}
}
public class ScreenCapture extends Frame{
private ImageCanvas canvas =new ImageCanvas(ImageUtils.getScreenImage());
public ScreenCapture(){
add(canvas);
setSize(400,300);
setVisible(true);
Thread imageThread =new UpdateThread();
imageThread.setDaemon(true);
imageThread.start();
}
class UpdateThread extends Thread{
public void run(){
while(true){
try {
Thread.currentThread().sleep(1000);
}
catch (Exception ex) {
}
canvas.setImage(ImageUtils.getScreenImage());
validate();
}
}
}
public static void main(String[] args){
new ScreenCapture();
}
}¡¡