Comunidad de diseño web y desarrollo en internet online

Citas Celebres al Azar

Citar            
MensajeEscrito el 19 Jun 2005 01:06 am
Holas... hace tiempo q no posteaba por aca, jejeje, pero me he encontrado con una duda... en mi pagina flash puse un loadvar para leer cosas de un txt, pero me gustaria poder hacer q leyera al azar citas celebres, por ejemplo, yo guardo muchas citas en un txt, y q flash solo tome una linea, y la haga aparecer, hay algun comando random, o algo asi?

de antemano muchas gracias.

Por rzs

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Jun 2005 01:32 am
Pues es fácil le damos un separador. por decir en tu txt
citas 1 - citas 2- citas 3- ...- citas n.
después rescatamos, como tenemos el separado "-" podemos convertir cada cita en un elemento de un Array con la función split
algo así

Código :

cita=cita.split("-");
//y luego el random
n=random(cita.length); 
trace(cita[n]);

y ya :)

Por t2k

32 de clabLevel



Genero:Masculino  



Ultima edición por t2k el 19 Jun 2005 10:04 pm, editado 1 vez

monkey island

msie
Citar            
MensajeEscrito el 19 Jun 2005 01:42 am
Lo hice una vez con txt pero me recuerdo mejor con xml, bueno luego me olvide de xml y lo puse en una Base de Datos :P, te explico con xml creo que es la manera sencilla que te puedo explicar y que puedas entender:

codigo xml, nombre del archivo "citas.xml":

Código :

<citascelebres>
   < item cita="La duda es el principio de la sabiduría" autor="Aristóteles" />
   < item cita="Cualquier tecnología suficientemente avanzada no se distingue de la magia" autor="Arthur C. Clarke" />
<citascelebres>


Ese codigo lo puedes hacer en el block de notas, pero asegurate de guardarlo con Codificacion unicode, esa opcion esta debajo de donde le indicas el nombre y tipo del archivo. Eso es para que te reconozca los acentos y las ñ, :wink:

codigo actioscript:

Código :

var citascelebres = new XML();
citascelebres.ignoreWhite = true; 
citascelebres.load ("citas.xml"); 

citascelebres.onLoad = function (){
       longitud = citascelebres.firstChild.childNodes.length;
       i = random(longitud);
       cajadetexto.text = citascelebres.firstChild.childNodes[i].attributes.cita+" el autor es: "+citascelebres.firstChild.childNodes[i].attributes.autor;
}


:D Bueno te explico el actionscript paso a paso,

1. var citascelebres***, declaro la variable, fijate una cosa, ve que el nombre del variable es igual al primer nodo del xml, es decir <citascelebres>
2. citascelebres.ignoreWhite = true; aqui le digo que ignore los espacios en blanco
3. citascelebres.load("citas.xml"), simple carga del archivo citas.xml
4. La funcion citascelebres.onLoad, es porque despues de una carga con .load se ejecuta esta funcion inmediatamente al ser completada la carga, por supuesto solo si esta definida.
5. longitud=***, aqui obtengo cuantas citas tengo en el xml, para efecto de este ejemplo longitud valdra 2
6. i=random(longitud), genero un numero aleatorio entre 0 y longitud-1, asi es que lo necesitamos porque los nodos van desde 0 hasta longitud-1, es decir 0 sera el de Aristoteles y 1 el de Arthur
7. Asigno a un texto dinamico la variable cita y autor.

Espero que hayas entendido, cualquier duda posteala
:wink:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 19 Jun 2005 02:17 am

t2k escribió:

Pues es fácil le damos un separador. por decir en tu txt
citas 1 - citas 2- citas 3- ...- citas n.
después rescatamos, como tenemos el separado "-" podemos convertir cada cita en un elemento de un Array con la función split
algo así

Código :

cita=cita.split("-");
//y luego el random
n=Math.random(cita.length); 
trace(cita[n]);

y ya :)


lo he puesto asi:

Código :

Obj1 = new LoadVars();
cita.htmlText = "Cargando...";
Obj1.load("cita.txt");
Obj1.onLoad = function() {
cita = Obj1.cita;
cita=cita.split("-"); 
n=Math.random(cita.length); 
trace(cita[n]); 
   cita.htmlText = "";
   cita.htmlText = "<i>"+cita+"</i>";
};


pero no me funciona jeje

Por rzs

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Jun 2005 02:29 am
Bueno ya veo que me esforze en hacertelo con xml para nada, :roll:

creo que tienes un error en:

n=Math.random(cita.length);


deberia ser

Código :

n= Math.random(obj1.length),


porque cita le estas asignado lo que hay en un cita del objeto.

te recomiendo que uses random en vez de Math.random, porque este ultimo genera numeros pseudo-aleatorios al contrario que si genera numeros aleatorios. mas informacion en la ayuda de flash con Math.random y random :wink:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 19 Jun 2005 03:08 am
Ni Maikel lee completo a rzs; ni rzs se preocupa por enteder el codigo de Maikel.

rzs, mira lo que te devuelve el "Math.random" (Por ejemplo, usando trace) y veras tu error

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

clabbofh
Citar            
MensajeEscrito el 19 Jun 2005 03:17 am
bueeeeeenoo solo queria ser claro con mi codigo

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 19 Jun 2005 09:43 pm
:? tiene que se así

Código :

   cita.htmlText = "<i>"+cita[n]+"</i>"; 

el random, te retorna el puntero al azar para que escoja una cita.
^^

Por t2k

32 de clabLevel



Genero:Masculino  

monkey island

firefox
Citar            
MensajeEscrito el 19 Jun 2005 09:45 pm
No, esta mal, eso no retorna ESE random

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

clabbofh
Citar            
MensajeEscrito el 19 Jun 2005 09:55 pm
:oops: es verdad tiene que ser tan solo random no Math.random

Por t2k

32 de clabLevel



Genero:Masculino  

monkey island

firefox
Citar            
MensajeEscrito el 01 Mar 2007 10:00 pm
Me intereso la respuesta de Maikel, pero no la pude lograr siguiendo los pasos. Si alguien puede subir los archivos seria muy bueno. Gracias!!

Por Xa2

2 de clabLevel



Genero:Masculino  

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.