efecto especial typing

Estrella
05 de Diciembre del 2003
Trato de hacer un script en javascript que muestre texto con un efecto
de "typing" cuando se carga una página y cuando se sitúa el ratón sobre un
link. El objetivo es crear un cuadro informativo que facilite la
navegación al usuario, por ello, el texto que se mostrará debería
estar en ficheros externos que el script usará. He pensado hacerlos en
xml, aunque eso probablemente haga que no funcione en ningún navegador
salvo IE.

Tengo un script para el efecto de "typing", sólo que el texto lo
agarra de un array.

También tengo un esbozo de las funciones para obtener los textos del
fichero xml y cargarlos, aunque tampoco acaba de funcionar.

Necesitaría aunar ambos script de modo que haga algo así:

- buscar en fichero xml el nodo [i], esto es, el tag que contiene el
texto que se mostrará.
- cargar ese string en memoria (a poder ser no todo el fichero xml
para hacerlo más rápido)
- aplicar la función para hacer un typing
- mostrar texto en un form de la página html con el efecto

Debería cargarse onload una función llamada show(xxx) por ejemplo, que
mostraría el texto del tag xml xxx y onmouseoverla función typing(yyy) que
mostraría el
texto del tag xml yyy.

Te paso los script que tengo:

/////////////////////////////////////

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

function loadXML()
{
xmlDoc.async="false";
xmlDoc.onreadystatechange=verify;
xmlDoc.load(infobox.xml);
ticker=xmlDoc.documentElement;
}

function verify()
{
// 0 Object is not initialized
// 1 Loading object is loading data
// 2 Loaded object has loaded data
// 3 Data from object can be worked with
// 4 Object completely initialized
if (xmlDoc.readyState != 4)
{
return false;
}
}

loadXML();

function type(i)
{
document.write('xmlObj.childNodes(i).firstChild.text');
}

type(i);

/////////////////////////////////////

var newsText = new Array();
newsText[0] = "hola";
newsText[1] = "Esta es la cajita que suministra bastante data";
newsText[2] = "Un linux, dos linux, tres linux... y más que arde";
newsText[3] = "ahhhhhhhhhhh";
newsText[4] = "uhhhhhhhhhhhh"

var ttloop = 0;
var tspeed = 50;
var tdelay = 1000;
var dwAText, cnews=0, eline=0, cchar=0, mxText;

function doNews() {
mxText = newsText.length - 1;
dwAText = newsText[cnews];
setTimeout("addChar()",1000)
}
function addNews() {
cnews += 1;
if (cnews <= mxText) {
dwAText = newsText[cnews];
if (dwAText.length != 0) {
document.news.news2.value = "";
eline = 0;
setTimeout("addChar()",tspeed)
}
}
}
function addChar() {
if (eline!=1) {
if (cchar != dwAText.length) {
nmttxt = ""; for (var k=0; k<=cchar;k++) nmttxt += dwAText.charAt(k);
document.news.news2.value = nmttxt;
cchar += 1;
if (cchar != dwAText.length) document.news.news2.value += "_";
} else {
cchar = 0;
eline = 1;
}
if (mxText==cnews && eline!=0 && ttloop!=0) {
cnews = 0; setTimeout("addNews()",tdelay);
} else setTimeout("addChar()",tspeed);
} else {
setTimeout("addNews()",tdelay)
}
}

doNews()