Comunidad de diseño web y desarrollo en internet online

AS2 que el trace() se escriba en un campo de texto dinamico

Citar            
MensajeEscrito el 27 Abr 2012 10:04 am
Estimados amigos, tengo un problema

Tengo el siguiente codigo:

Código ActionScript :

    var listado:Array = Array("Guillermo", "Lucas", "David", "Roger", "Bruno", "Iñaki", "Alex", "Carlos");
    var Total:Number = listado.length;
    for (i=0; i<Total; i++) {
    aleatorio = Math.floor(Math.random()*(listado.length));
    seleccion = listado[aleatorio];
    trace(seleccion);
    listado.splice(aleatorio, 1);
    }



eso me genera en el OUTPUT una lista de nombres aleatorios y sin repetirse.
asi

David
Guillermo
Lucas
Bruno
Carlos
Iñaki
Roger
Alex

Mi problema esel siguiente.
Como lo tengo que hacer para que en vez de que me muestre los datos en el OUTPUT me los muestre en un campo de texto dinamico?

DUDA2: como lo tendria que hacer si quiero que al apretar un boton me muestresolo un nombre, luego al apretarlo denuevo me muestre otro y otro pero que el nombre no se repita?

SALUDOS Y GRACIAS

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Abr 2012 12:48 pm
La acción del botón sería (suponiendo que el campo de texto se llame campo)

Código ActionScript :

campo.text = listado.splice(Math.floor(Math.random()*(listado.length)), 1);


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Abr 2012 06:58 pm
Gracias Jorge portu respuesta , pero no resulto :( al poner ese codigo en un boton el texto dinamico sigue sin mostrar nada :(

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 May 2012 11:58 am
Ahora debajo de eso pon

trace("Existe campo de texto "+campo.text)
trace("¿El array está en scope "+listado.splice(Math.floor(Math.random()*(listado.length)), 1))

Dime que sale en el trace

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 May 2012 02:09 pm
Hola estimado Jorge

Mira al poner ese codigo me sale esto en el output

David
Bruno
Carlos
Guillermo
Lucas
Roger
Alex
Iñaki
Existe campo de texto
¿El array está en scope

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 May 2012 08:09 pm
Debes quitar el código anterior, porque vacía el array, cuando ejecuta el que te puse ya no hay nada en el array

Jorge

Tip> revisa que es Array.splice en la ayuda

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 May 2012 03:56 am
Hola, estoy tratando de comprenderlo, lo que quiero hacer es que al apretar un boton me elija un nombre de la lista sin que se repitan pero que el nombre aparesca en un campo de texto.
Aun no lo puedo solucionar. :(
Muchas gracias Jorge por orientarme

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 May 2012 12:10 pm
Ok, NPI.
Haz lo siguiente

Código ActionScript :

var Total:Number = listado.length;
    for (i=0; i<Total; i++) {
    aleatorio = Math.floor(Math.random()*(listado.length));
    seleccion = listado[aleatorio];
    trace(seleccion);
    listado.splice(aleatorio, 1);
    }


Lo anterior, lo borras. Luego creas un botón llamado miBoton (nombre de instancia) en el escenario y pones en el timeline:

Código ActionScript :

var listado:Array = Array("Guillermo", "Lucas", "David", "Roger", "Bruno", "Iñaki", "Alex", "Carlos");
miBoton.onPress = function(){
  campo.text = listado.splice(Math.floor(Math.random()*(listado.length)), 1);
}


Tiene que haber adem'as un campo de texto llamado campo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 May 2012 01:20 pm
Muchas Gracias JORGE... FUNCIONA EXELENTE.

Ahora estoy tratando de comprender aun que me cuesta mucho... la sintaxis del codigo.

COn sulta...
Ahora bien, como podria hacerlo si los datos de los nombres quisiera traerlos desde un xml?
Si me pudieras orientar en esto estare muy muy agadecido.

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 May 2012 01:25 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 May 2012 01:25 pm
Hola Jorge
Estoy desarrollando el tutorial del link que me mandaste, pero definitivamente creo que lo mio es la animacion :(

Mira tengo este xml


<nombres>
<names>nombre 1</names>
<names>nombre 2</names>
<names>nombre 3</names>
<names>nombre 4</names>
<names>nombre 5</names>
<names>nombre 6</names>
<names>nombre 7</names>
<names>nombre 8</names>
<names>nombre 9</names>
<names>nombre 10</names>
<names>nombre 11</names>
<names>nombre 12</names>
<names>nombre 13</names>
<names>nombre 14</names>
<names>nombre 15</names>
<names>nombre 16</names>
<names>nombre 17</names>
<names>nombre 18</names>
<names>nombre 19</names>
<names>nombre 20</names
</nombres>


y esto en mis acciones

//Declara la variable "obj_xml" como un objeto XML
var obj_xml:XML = new XML();
/*Esta linea es EXTREMADAMENTE necesaria
Es la que nos permite colocar espacios entre etiquetas
Sin ella, tendriamos que mantener completamentepegado nuestro XML
Y se parsearia mal dentro de Flash
*/
obj_xml.ignoreWhite = true;
//Función que se ejecuta en el momento en el que Flash cargue el XML
obj_xml.onLoad = function(exito) {
//La variable exito sera "true" si se cargo bien y "false" si hubo
//algun error
if (exito) {
//Le asigna al campo del asunto la primera rama del árbol, como veran la #0
campo.text = obj_xml.firstChild.childNodes[0].firstChild.nodeValue;
//Asigna al campo de destino el valor de la segunda rama, la #1

} else {
//Muestra un mensaje de error en caso de que algo fallara
campo.text = "Error";
}
};
//Esta es la función que llama el botón
function cargarXML() {
//Invoca a la función "load" del objeto XML, pasandole por parametro
//La ruta de nuestro archivo XML
obj_xml.load("nombres.xml");
}

miBoton.onPress = function(){
cargarXML();
}

Y al precionar el boton me muestra solo el primer nombre.

No comprendo como aplicar el primer ejemplo que nos dio resultado a este.
No me dare por vencido...

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 May 2012 02:46 pm
Pero eso es lo que estas haciendo ... asignas al campo de texto el primer nodo, si quisieras crear un array con el listado sería

Código ActionScript :

var total = obj_xml.firstChild.childNodes;
var miArray = new Array()
for(var i:Number=0; i<total; i++){
     miArray.push(obj_xml.firstChild.childNodes[i].firstChild.nodeValue)
}
trace(miArray)


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 May 2012 03:05 pm
Muchas gracias por tu tiempo JORGE

Mira inclui el codigo que me diste pero no obtube ningun cambio, tampoco me arrojo nada en el output

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 May 2012 03:08 pm
Ok, te toca poner un poco a ti. No es copy/paste, NO, si copipasteas lo que pongo no funcionará, eso te lo garantizo.
Lo que te indiqué es como armar un array con los datos del XML, en el trace te tiene que salir todos los nombres separados por coma. Lo que te puse reemplaza esta linea

campo.text = obj_xml.firstChild.childNodes[0].firstChild.nodeValue;

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 May 2012 04:13 pm
Muchas gracias nuevamente JORGE

Mira lo he conseguido a medias....

ahora la limpie mi codigo y en las acciones puse esto:

Código ActionScript :

//Declara la variable "obj_xml" como un objeto XML
var obj_xml:XML = new XML();
/*Esta linea es EXTREMADAMENTE necesaria
  Es la que nos permite colocar espacios entre etiquetas
  Sin ella, tendriamos que mantener completamentepegado nuestro XML
  Y se parsearia mal dentro de Flash
*/
obj_xml.ignoreWhite = true;
//Función que se ejecuta en el momento en el que Flash cargue el XML
obj_xml.onLoad = function(exito) {
   //La variable exito sera "true" si se cargo bien y "false" si hubo
   //algun error
   if (exito) {
      

      
var Total:Number = listado.length;
    for (i=0; i<Total; i++) {
    aleatorio = Math.floor(Math.random()*(listado.length));
    seleccion = listado[aleatorio];
    trace(seleccion);
    listado.splice(aleatorio, 1);
    }
   
   var listado:Array = obj_xml.firstChild.childNodes;
miBoton.onPress = function(){
  campo.text = listado.splice(Math.floor(Math.random()*(listado.length)), 1);
  
}      
      
         
      
   } else {
      //Muestra un mensaje de error en caso de que algo fallara
      campo.text = "Error";
   }
};
//Esta es la función que llama el botón
function cargarXML() {
   
   //Invoca a la función "load" del objeto XML, pasandole por parametro
   //La ruta de nuestro archivo XML
   obj_xml.load("nombres.xml");
}

miBoton.onPress = function(){
    cargarXML();
}


Y me funciona ,,, pero...

1) Devo presionar 2 veces el boton para que me muestre un resultado, la primera vez que presiono el boton no susede nada.
2) me lo muestra de la siguiente manera " <name>nombre 15</name> "

Como lo ago para solucionar estos 2 inconvenientes?
para que tenga que precionar el boton a la primera y me muestre un nombre y me salga solo el nombre sin los <name> y </name>

MUCHAS GRACIAS

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 May 2012 05:20 pm
Crea el array fuera del onload, por ejemplo al principio de todo pon

var listado:Array = new Array();

Luego saca esto dentro del onLoad

Código ActionScript :

miBoton.onPress = function(){
  campo.text = listado.splice(Math.floor(Math.random()*(listado.length)), 1);  
}    


cargarXML es una función que puedes llamar directamente, no hace falta un boton para cargar el XML

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 May 2012 06:54 pm
Ok pero es que quiero cargar un nombre diferente cada vez que apreto el boton,claro sin repetir.
De todas maneras me sirve asi?

Saludos y gracias

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 May 2012 07:07 pm
Pruebo, luego pregunto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 May 2012 10:51 pm
Hola...
Disculpen por ser tan torpe con esto de los codigos ...
mira cambie mi codigo por este

Código ActionScript :

//Declara la variable "obj_xml" como un objeto XML
var obj_xml:XML = new XML();
obj_xml.ignoreWhite = true;

obj_xml.onLoad = function(exito) {

   if (exito) {
      
var Total:Number = listado.length;
    for (i=0; i<Total; i++) {
    aleatorio = Math.floor(Math.random()*(listado.length));
    seleccion = listado[aleatorio];
    trace(seleccion);
    listado.splice(aleatorio, 1);
    }
   
   var listado:Array = obj_xml.firstChild.childNodes;
  campo.text = listado.splice(Math.floor(Math.random()*(listado.length)), 1);      
  
   } else {
      campo.text = "Error";
   }
};

function cargarXML() {
   
   obj_xml.load("nombres.xml");
}

miBoton.onPress = function(){
    cargarXML();
}



Al apretar el boton me arroja el resutlado "<persona>nombre 6</persona>"

PERO...al presionarlo unas veces me repite las nombres.

Que estoy haciendo mal?

Muchas gracias

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 May 2012 09:39 am
Ok, copy/paste

Código ActionScript :

var listado:Array = new Array();
var obj_xml:XML = new XML();
obj_xml.ignoreWhite = true;
obj_xml.onLoad = function(exito)
{
   if (exito)
   {
      var tot:Number = obj_xml.firstChild.childNodes.length;
      for (i = 0; i < tot; i++){
         listado.push(obj_xml.firstChild.childNodes[i].firstChild.nodeValue);
      }
   } else{
      campo.text = "Error";
   }
};
obj_xml.load("nombres.xml");
miBoton.onPress = function(){
   campo.text = listado.splice(Math.floor(Math.random() * (listado.length)), 1);   
};


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 May 2012 11:39 pm
Estimado JORGE
Muchas gracias por tu tiempo y respuestas, resulto todo EXELENTE.
Quiero empezar a interiorizarme mas en el tema de la programacion flash avanzada.
Maestro... tu con tu experiencia y sabiduria... que me recomiendas
De caveza a AS2 AS3?

Saludos y muchas bendiciones para ti.

Por isasaurio

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 May 2012 10:12 am
AS3, que ya lleva 6 anos desde que salio

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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