ActionScript - Codigo

 
Vista:

Codigo

Publicado por Gus_gus (2 intervenciones) el 04/06/2005 06:17:01
Salud2 a todos
Alguien me puede ayudar en este codigo.

Es para hacer botones dinamicos pero soy nueva en esto y la verdad no lo entiendo del todo ya que tambien manda a llamar codigo de xml (con xml no hay tanto problema) pero con Action Script medio me pierdo , si alguien sabe en que que es lo que hace cada funcion se lo agradezco,

dat = new XML();
dat.load("datos.xml");
dat.ignoreWhite = true;
//
function convertXML(base) {
var i = 0, cantidad;
cantidad = base.parentNode.childNodes.length;
while (i<cantidad) {
construir_arreglos(i, base.attributes);
base = base.nextSibling;
i++;
}
}
dat.onLoad = function(success) {
convertXML(dat.firstChild.firstChild);
};
//
palabras = new Array();
direcciones = new Array();
function construir_arreglos(i, att) {
total = i;
palabras.push(att.nombre);
direcciones.push(att.direccion);
}
//
function generaMenu() {
var cadena_d_numeros, i = 0;
while (i<=total) {
cadena_d_numeros += lineaMostrar(i);
i++;
}
numeracion = "<p align=\"center\">"+cadena_d_numeros+"</P>";
}
function selMenu(numero_m) {
numero_marcado = numero_m;
salida = palabras[numero_m]+"<br>"+direcciones[numero_m];
generaMenu();
}
function lineaMostrar(numero) {
var colorTex, fraseTex;
if (numero != numero_marcado) {
colorTex = "#000000";
} else {
colorTex = "#FF0000";
}
switch (tipo) {
case "palabra" :
fraseTex = (palabras[numero]);
break;
case "direccion" :
fraseTex = (direcciones[numero]);
break;
default :
if (numero+1<10) {
fraseTex = ("0"+(numero+1));
} else {
fraseTex = (numero+1);
}
break;
}
return ("<font color=\""+colorTex+"\"><a href='asfunction:selMenu,"+numero+"'>"+fraseTex+"</a></font><br>");
}
//_______________________________________________________________________________
function debugger() {
debb = dat.toString().split("<").join("(").split(">").join(")<br>");
representacionXML.html = false;
representacionXML.htmlText = representacionXML.htmlText.split("(").join("<").split(")").join(">");
}
function compilarXML() {
var i, sumatoria, estamos, caracter;
for (i=0; i<representacionXML.htmlText.length; i++) {
caracter = representacionXML.htmlText.substr(i, 1);
if (caracter == "<") {
estamos = "abriendo";
} else if (caracter == ">") {
estamos = "cerrando";
sumatoria += ">";
}
if (estamos == "abriendo") {
sumatoria += caracter;
}
}
//
palabras = new Array();
direcciones = new Array();
dat = new XML(sumatoria);
convertXML(dat.firstChild.firstChild);
generaMenu();
}
//
stop();
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Codigo

Publicado por Santiago Martín (52 intervenciones) el 04/06/2005 13:08:20
Bueno estimada amiga voy a poner la explicacion en varios post.

dat = new XML();
dat.load("datos.xml");
dat.ignoreWhite = true;
//Construye un nuevo objeto 'dat' de tipo XML
//Utiliza el método 'load' del objeto 'dat' para cargar un documento XML
//Utiliza el método 'ignoreWhite' del objeto 'dat' para que ignore los espacios en blanco

function convertXML(base) {
var i = 0, cantidad;
cantidad = base.parentNode.childNodes.length;
while (i<cantidad) {
construir_arreglos(i, base.attributes);
base = base.nextSibling;
i++;
}
}
/*Crea una función 'convertXML' que va a tener un parámetro de entrada: 'base'
Define 2 variables i y cantidad, e 'i' la inicializa a 0
A 'cantidad' le asigna la longitudo de nodos (numero de nodos que tiene base (que es el parámetro que introducimos
Hace un bucle mientras i sea menor que cantidad:
llama a la función 'contruir_arreglos' y le pasa como parámetros de entrada: i, y los atributos de base
Al valor de i le suma uno. Nota: i++ es como si pusiéramos i=i+1
*/

dat.onLoad = function(success) {
convertXML(dat.firstChild.firstChild);
}
/* Al método 'onLoad' del objeto dat le asignamos una function(success). Es una función que va a hacer lo siguiente
siempre y cuando se haya cargado lo anterior (ver método load más arriba):
Llama a una función 'convertXML' que le pasa como parámetros de entrada el primer subnodo del primer nodo del objeto.
Es decir si tenemos un XML del tipo
<usuarios>
<usuarios europa>
<usuarios espania>
<usuario id="1" nombre="Santi"/>
</usuarios espania>
<usuarios francia>
<usuario id="2" nombre"Thierry"/>
</usuarios francia>
</usuarios europa>
</usuarios>

dat.firstChild.firstChild...
1er firstChild => usuarios europa.
2º firstChild => es el primero dentro del nodo anterior, usuarios espania
*/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Codigo (II)

Publicado por Santiago Martín (52 intervenciones) el 04/06/2005 13:10:22
palabras = new Array();
direcciones = new Array();
function construir_arreglos(i, att) {
total = i;
palabras.push(att.nombre);
direcciones.push(att.direccion);
}
/* Crea un nuevo objeto Array de nombre 'palabras'
Crea un nuevo objeto Array de nombre 'direcciones'
Crea una función 'construir_arreglos' que le pasa como parámetros 'i' y 'att'
A la variable 'total' le asigna el valor de i (recibido como parámetro).
Con el método 'push' del objeto de tipo array 'palabras' asigna el valor de 'nombre' del parámetro 'att'
Con el método 'push' del objeto de tipo array 'direcciones' asigna el valor de 'direccion' del parametro 'att'
*/

function generaMenu() {
var cadena_d_numeros, i = 0;
while (i<=total) {
cadena_d_numeros += lineaMostrar(i);
i++;
}
numeracion = "<align=\"center\">"+cadena_d_numeros+"</P>";
}
/* Crea una función 'generaMenu' que NO recibe ningún parámetro de entrada
Define dos variables 'cadena_d_numeros' e 'i'. La variable 'i' la inicializa a 0
Crea un bucle que mientras 'i' sea menor o igual que 'total' hace lo siguiente:
cadena_d_numeros le AÑADE el valor que tenía antes MÁS el valor de 'lineaMostrar' para cuando sea el valor de 'i' correspondiente
es como poner cadena_d_numeros = cadena_d_numeros + lineaMostrar(i);
Al valor de i le suma 1.
Una vez que ha acabado el bucle, a la variable numeracion le asigna lo que está entre comillas concatenaddo con el valor que tenga cadena_d_numeros
*/

function selMenu(numero_m) {
numero_marcado = numero_m;
salida = palabras[numero_m]+"<br>"+direcciones[numero_m];
generaMenu();
}
/* Crea una función 'selMenu' que recibe un parámetro de entrada 'numero_m'
A la variable numero_marcado le asigna el valor de 'numero_m'.
A la variable salida le asigna el contenido del array 'palabras' en la posicion 'numero_m' concatenado con el valor del array direcciones para la posicion 'numero_m'
Hace una llamada (para ejecutar) la función 'generaMenu()'
*/

function lineaMostrar(numero) {
var colorTex, fraseTex;
if (numero != numero_marcado) {
colorTex = "#000000";
}else{
colorTex = "#FF0000";
}

switch (tipo) {
case "palabra" :
fraseTex = (palabras[numero]);
break;
case "direccion" :
fraseTex = (direcciones[numero]);
break;
default:
if (numero+1<10) {
fraseTex = ("0"+(numero+1));
}else{
fraseTex = (numero+1);
}
break;
}
return ("<font color=\""+colorTex+"\"><a href='asfunction:selMenu,"+numero+"'>"+fraseTex+"</a></font><br>");
}
/* Crea una función 'lineaMostrar' que le introduce como parámetro de entrada 'numero'
Define dos variables 'colorTex' y 'fraseTex'
Hace una comprobación:
Si numero es distinto de numero_marcado entonces colorTex vale (ese color hexadecimal)
si no... colorText vale ese otro color

Luego hace otra comprobación.
A la función switch se le introduce un parámetro (el valor de 'tipo').
Case indica una posibilidad por tanto case "palabra" indica que si lo que se ha introducido ha sido la cadena "palabra" que haga lo que viene a continuacion
que es que a 'fraseText' le asigne el valor del array 'palabras' para el valor de 'numero'
(Si numero fuera 0, asignaaria del array palabras la 1ª posicion -->Recuerda que un array empieza por 0)
break; --> indica que salga de la estructura de control, en este caso del switch
Que no es "palabra" y es "direccion" pues a la la variable 'fraseTex' asigna el valor del array
direcciones para el valor de 'numero'.
break; --> indica que salga de la estructura de control, en este caso del switch

default: --> Esto es en el caso de que ninguna de las dos condiciones anteriores se cumpliera.
Hay un if que comprueba si el numero más 1 es menor que 10. Si lo es a fraseTex le asigna "0"concatenado con el valor de numero más uno.
Si no.... a fraseTex le asigna el valor de numero más 1
break; --> indica que salga de la estructura de control, en este caso del switch

Finaliza el switch.
return --> Devuelve lo contenido entre paréntesis. que son cadenas de texto (lo que sta entre comillas) concatenaddo con las variables
*/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Codigo (II)

Publicado por carolina (1 intervención) el 16/08/2007 18:17:42
nesesito saber cual es el codigo de santiago
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Codigo (y III)

Publicado por Santiago Martín (52 intervenciones) el 04/06/2005 13:11:51
function debugger() {
debb = dat.toString().split("<").join("(").split(">").join(")<br>");
representacionXML.html = false;
representacionXML.htmlText = representacionXML.htmlText.split("(").join("<").split(")").join(">");
}
/* Crea una funcion debugger que no recibe ningún parámetro de entrada
A la variable debb le asigna el resultado de hacer esto:
a lo que valga dat :
1) toString -> Lo convierte a Cadena
2) split("<") -> Lo separa a partir del caracter o cadena indicados
3) join("(") -> Añade el caracter o cadena indicados indicados
4) split(">") -> Lo separa a partir del caracter o cadena indicados
5) join(")<br>" -> Añade el caracter o cadena indicados
El cuadro de texto dinámico 'representacionXML' (se que es un cuadro de texto xq ellos pueden llevar el método
html)
lo pone a falso (es decir que no permite contenido html).
A ese cuadro de texto al método htmlText le asigna lo que ya había, pero ... (ver los 5 puntos de antes para comprender
las funciones).
*/

function compilarXML() {
var i, sumatoria, estamos, caracter;
for (i=0; i<representacionXML.htmlText.length; i++) {
caracter = representacionXML.htmlText.substr(i, 1);
if (caracter == "<") {
estamos = "abriendo";
}else if (caracter == ">") {
estamos = "cerrando";
sumatoria += ">";
}

if (estamos == "abriendo") {
sumatoria += caracter;
}
}
}
/* Crea una función compilarXML que no recibe ningún parámetro de entrada
Define variables i, sumatoria, estamos, caracter
hace un bucle que va a empezar para i=0 mientras que i sea menor que la longitud de representacionXML.htmlText, y añade valores de i de 1 en uno
(recuerda i++ es lo mismo que i=i+1)
A la variable caracter le asigna: el resultado de a representacionXML extraer la cadena correspondiente que empieza en
el valor que tenga 'i' y toma 1 solo caracter -> segundo parámetro de la funcion substr(ve la ayuda de flash sobre esta funcion)
Comprueba si caracter es "<", entonces a la variable estamos le asigna "abriendo"
si no.....
si caracter es ">", a la variable estamos le asigna "cerrando" y a 'sumatoria' se asigna lo que tenia antes más ">"
Fin de esta comprobacion

Hace otra: si el valor de la variable 'estamos' es "abriendo" entonces a 'sumatoria' le asigjna lo que habia antes más 'caracter'
Fin de esta comprobacion
Fin del for
Fin de la función
*/

//
palabras = new Array();
direcciones = new Array();
dat = new XML(sumatoria);
convertXML(dat.firstChild.firstChild);
generaMenu();
}
/*
Crea un objeto 'palabras' de tipo Array
Crea un objeto 'direcciones' de tipo Array
Crea un objeto 'dat' de tipo nuevo XML que recoje lo que haya en 'sumatoria'.
Llama a la funcioi 'convertXML' y le pasa como parametro el primer nodo del primer nodo de 'dat'.
Llama a la funcion 'generaMenu'
*/
stop();
//El stop sirve para que no pase al fotograma siguiente la peli

He intentado ser lo más claro posible, de todas formas tu código lo tengo en un archivo .fla en un fotograma con todos los comentarios, por si lo quieres.

Salu2
SAnti M:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Codigo (archivo.fla)

Publicado por Gus_gus (2 intervenciones) el 06/06/2005 06:25:21
Muchisimas Gracias, me sacaste de un gran apuro.

si puedes porfavor enviarme tu archivo, te lo agradeceria.

te pongo otras direcciones de correo.

[email protected]>
[email protected]>

y la de arriba.

Saluditos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar