⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java16.htm

📁 E-books about Java Programing in Spanish
💻 HTM
字号:
<HTML>

<HEAD>

<TITLE>Java desde Cero</TITLE>



<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0z">

</HEAD>

<BODY background=/iconos/1.gif  TEXT=000000 LINK=FF0000 VLINK=A62A2A>
<H1>Multimedia!<BR>

</H1>

<P>

Java permite cargar y visualizar archivos <FONT FACE="Arial">GIF</FONT>

o <FONT FACE="Arial">JPEG</FONT> de imagen y <FONT FACE="Arial">AU</FONT>

de audio (solamente en mono, 8 bits, 8000Hz de muestreo).

<P>

Para el caso del sonido, un archivo de audio se carga mediante

un objeto de la clase <FONT FACE="Arial">AudioClip</FONT>, mediante

el m&eacute;todo <FONT FACE="Arial">getAudioClip(URL, archivo)</FONT>,

se ejecuta con los m&eacute;todos <FONT FACE="Arial">play()</FONT>

o <FONT FACE="Arial">loop()</FONT> y se detiene con <FONT FACE="Arial">stop()</FONT>.

<P>

Noten esto! Si bien dijimos que un applet no puede acceder al

disco de la m&aacute;quina cliente, SI puede leer archivos del

server desde donde se carg&oacute;. Por lo tanto, pas&aacute;ndole

el URL de la m&aacute;quina desde donde se carg&oacute; el applet,

podemos leer cualquier tipo de archivo a trav&eacute;s de la red.

<P>

La forma m&aacute;s segura de indicar dicho URL es mediante el

m&eacute;todo <FONT FACE="Arial">getDocumentBase()</FONT>, que

nos da el URL adecuado.

<P>

Por ejemplo, puedo cargar y reproducir audio con s&oacute;lo dos

l&iacute;neas:

<PRE>

<FONT SIZE=2>........

AudioClip sonido = getAudioClip( getDocumentBase(), &quot;sonido.au&quot; );

sonido.play();

.........<BR>

</FONT>

</PRE>

<P>

Por otra parte, una foto puede cargarse mediante un objeto de

clase <FONT FACE="Arial">Image</FONT> mediante el m&eacute;todo

<FONT FACE="Arial">getImage(URL, archivo)</FONT>. Luego la mostramos

en un objeto <FONT FACE="Arial">Graphics</FONT> correspondiente

al applet (o al &aacute;rea de dibujo) mediante <FONT FACE="Arial">drawImage(imagen,

x, y, observador)</FONT>. Observador es un objeto que implementa

la interface ImageObserver; los applets, por descender de Component

(que implementa dicha interface) tambi&eacute;n la implementan.

T&iacute;picamente, la imagen se visualiza en el m&eacute;todo

paint(...) del applet:

<PRE>

<FONT SIZE=2>.............

algunMetodo(...) {

..........

Image imagen = getImage(getDocumentBase(), &quot;imagen.gif&quot;);

..........

}

...........

	public void paint(Graphics g) {

		g.drawImage(imagen, xOffset, yOffset, this);	// &quot;this&quot; representa al applet

	}

...............<BR>

</FONT>

</PRE>

<P>

El problema con las im&aacute;genes es asegurarse que fue cargada

antes de mostrarla. Para eso se utiliza un <FONT FACE="Arial">MediaTracker</FONT>

(tambi&eacute;n deber&iacute;a servir para los archivos de audio,

pero en esta versi&oacute;n a&uacute;n no est&aacute; implementado).

<P>

Mediante <FONT FACE="Arial">addImage( imagen, grupo)</FONT> se

agrega una imagen a la lista del <FONT FACE="Arial">MediaTracker</FONT>,

y hay m&eacute;todos para esperar que sea cargada (como <FONT FACE="Arial">waitForAll()</FONT>

o <FONT FACE="Arial">waitForID(grupo)</FONT>), para verificar

que se haya cargado correctamente  (como <FONT FACE="Arial">checkAll()</FONT>,

<FONT FACE="Arial">checkID(grupo)</FONT>, <FONT FACE="Arial">isErrorAny()</FONT>...),

etc&eacute;tera.

<P>

El siguiente applet utiliza estos conceptos para cargar una imagen

y un archivo de audio y mostrarlos:<BR>

<PRE>

<FONT SIZE=2>//	Ejemplo24.java

import java.awt.*;

import java.applet.*;



public class Ejemplo24 extends Applet {



	MediaTracker	supervisor;

	String		archImagen, archAudio;

	Image		imagen;

	AudioClip	audio;

	Label		titulo;

	Panel		cuadro;

	

	public void init() {

		supervisor = new MediaTracker(this);

		archImagen = &quot;javacero.gif&quot;;

		archAudio = &quot;tada.au&quot;;



		// carga imagen

		imagen = getImage(getDocumentBase(), archImagen);

		supervisor.addImage(imagen,0);

		try {

			supervisor.waitForID(0);			// espero que se cargue

		}

		catch (InterruptedException e) {

			System.out.println(&quot;Error cargando imagen!&quot;);

		}

		showStatus(&quot;Imagen cargada&quot;);



		// carga sonido

		audio = getAudioClip(getDocumentBase(), archAudio);



		// arma layout

		setLayout(new BorderLayout());

		titulo = new Label(archImagen);

		setFont(new Font(&quot;helvetica&quot;, Font.BOLD, 18));

		add(&quot;South&quot;, titulo);

	}



	public void start() {

		repaint();

		audio.play();

	}



	public void paint(Graphics g) {

		if (supervisor.isErrorAny()) {

			g.setColor(Color.black);

			g.fillRect(0, 0, size().width, size().height);

			return;

		}

		g.drawImage(imagen, 0, 0, this);

	}

}

</FONT>

</PRE>

<P>

Para visualizarlo, como siempre, creamos un HTML:<BR>

<PRE>

<FONT SIZE=2>&lt;HTML&gt;

&lt;HEAD&gt;

&lt;TITLE&gt;Ejemplo 24 - Ejemplo Multimedia&lt;/TITLE&gt;

&lt;/HEAD&gt;

&lt;BODY&gt;



&lt;applet code=&quot;Ejemplo24.class&quot; width=150 height=200&gt;

&lt;/applet&gt;

&lt;/BODY&gt;

&lt;/HTML&gt;<BR>

<BR>

</FONT>

</PRE>

<H2>Parametrizando un applet</H2>

<P>

Vamos a aprovechar este ejemplo, modific&aacute;ndolo un poco

para indicarle desde el HTML qu&eacute; archivos debe cargar,

mediante par&aacute;metros. Nuestro HTML modificado ser&aacute;:

<BR>

<PRE>

<FONT SIZE=2>&lt;HTML&gt;

&lt;HEAD&gt;

&lt;TITLE&gt;Ejemplo 24 - Multimedia&lt;/TITLE&gt;

&lt;/HEAD&gt;

&lt;BODY&gt;



&lt;applet code=&quot;Ejemplo24.class&quot; width=150 height=200&gt;

&lt;param name=&quot;imagen&quot; value=&quot;javacero.gif&quot;&gt;

&lt;param name=&quot;sonido&quot; value=&quot;tada.au&quot;&gt;

&lt;/applet&gt;

&lt;/BODY&gt;

&lt;/HTML&gt;<BR>

</FONT>

</PRE>

<P>

Para leer estos par&aacute;metros desde el applet, usamos el m&eacute;todo

<FONT FACE="Arial">getParameter(nombrePar&aacute;metro)</FONT>,

as&iacute; que podemos modificar nuestro applet simplemente modificando

un par de l&iacute;neas:<BR>

<PRE>

<FONT SIZE=2>		archImagen = getParameter(&quot;imagen&quot;);

		archAudio = getParameter(&quot;sonido&quot;);<BR>

</FONT>

</PRE>

<P>

Voil&aacute;! Pueden probar de cargar este applet en http://www.amarillas.com/rock/java/Ejemplo24.htm.

<P>

De esta manera podemos pasar cualquier valor como par&aacute;metro

para un applet, haci&eacute;ndolo m&aacute;s flexible.

<P>

Y esto es todo por hoy!<BR>

<P>

Con esto hemos visto una gran parte de lo que es Java. No hemos

profundizado demasiado en cada punto, pero hemos hecho ejemplos

que funcionan para ilustrar cada cosa.

<P>

Sin embargo, hemos dejado un punto importante y muy fuerte de

Java, que es el de las comunicaciones entre aplicaciones y, especialmente,

el uso de sockets y la programaci&oacute;n de aplicaciones cliente-servidor.

En esto nos centraremos en el pr&oacute;ximo cap&iacute;tulo.

<BR>

<BR>

<BR>

<BR>

<BR>

<P>

Jorge Bourdette

<P>

<A HREF="mailto:jpb@amarillas.com" >jpb@amarillas.com</A><BR>

</BODY>

</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -