Comunidad de diseño web y desarrollo en internet online

Me ayudan con este FOR??

Citar            
MensajeEscrito el 04 Jul 2011 06:41 pm
Lo que necesito es que se attachen tanta cantidad de botones como nodos en mi XML, el total de nodos que poseo esta definido por la variable "largo".
No logro que esto suceda, me pueden dar una mano??? estoy volviéndome loco, jejeje!!!


Les dejo el AS que cree.


Código ActionScript :

function crearbotones(){
   
loc_x=("-460");
trace(loc_x);
loc_x=("-348");
trace(loc_y);

for(i=0; i<largo; i++){
_root.dataSheet.attachMovie("AccionesBG_btn","boton" + i,i);
["boton" + i]_x=loc_x;
["boton" + i]_y=loc_y - i * 24;

al_clicar = new Object();
al_clicar.click = function(objetivo) {
         if (objetivo.target == boton0 ) {
      var k=0;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 0!!");
   } else if (objetivo.target == boton1 ) {
      var k=1;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 1!!");
   } else if (objetivo.target == boton2) {
      var k=2;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 2!!");
   } else if (objetivo.target == boton3) {
      var k=3;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 3!!");
   } else if (objetivo.target == boton4) {
      var k=4;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 4!!");
   } else if (objetivo.target == boton5) {
      var k=5;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 5!!");
   } else if (objetivo.target == boton6) {
      var k=6;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 6!!");
   } else if (objetivo.target == boton7) {
      var k=7;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 7!!");
   } else if (objetivo.target == boton8) {
      var k=8;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 8!!");
   } else if (objetivo.target == boton9) {
      var k=9;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 9!!");
   } else if (objetivo.target == boton10) {
      var k=10;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 10!!");
   } else if (objetivo.target == boton11) {
      var k=11;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 11!!");
   } else if (objetivo.target == boton12) {
      var k=12;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 12!!");
   } else if (objetivo.target == boton13) {
      var k=13;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 13!!");
   } else if (objetivo.target == boton14) {
      var k=14;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 14!!");
   } else if (objetivo.target == boton15) {
      var k=15;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 15!!");
   } else if (objetivo.target == boton16) {
      var k=16;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 16!!");
   } else if (objetivo.target == boton17) {
      var k=17;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 17!!");
   } else if (objetivo.target == boton18) {
      var k=18;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 18!!");
   } else if (objetivo.target == boton19) {
      var k=19;
      description_txt.model_txt.text = model[k];
        description_txt.description1_txt.text = description_1[k];
        description_txt.description2_txt.text = description_2[k];
        image1_mc.loadMovie(image_1[k])
        image2_mc.loadMovie(image_2[k]);
        image3_mc.loadMovie(image_3[k]);
      trace("Has pulsado el boton 19!!");
   } 
}
boton0.addEventListener("click", al_clicar);
boton1.addEventListener("click", al_clicar);
boton2.addEventListener("click", al_clicar);
boton3.addEventListener("click", al_clicar);
boton4.addEventListener("click", al_clicar);
boton5.addEventListener("click", al_clicar);
boton6.addEventListener("click", al_clicar);
boton7.addEventListener("click", al_clicar);
boton8.addEventListener("click", al_clicar);
boton9.addEventListener("click", al_clicar);
boton10.addEventListener("click", al_clicar);
boton11.addEventListener("click", al_clicar);
boton12.addEventListener("click", al_clicar);
boton13.addEventListener("click", al_clicar);
boton14.addEventListener("click", al_clicar);
boton15.addEventListener("click", al_clicar);
boton16.addEventListener("click", al_clicar);
boton17.addEventListener("click", al_clicar);
boton18.addEventListener("click", al_clicar);
boton19.addEventListener("click", al_clicar);

}
}

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Jul 2011 08:56 pm
220 lineas de código !!!!
No, por ejemplo, para que las últimas 20 sean tres haces esto (el addEventListener es )

Código ActionScript :

for(var i:Number = 0; i<20; i++){
    this["boton"+i].addEventListener("click", al_clicar); 
}


Igual en AS2 los botones tienen onPress, a menos que estés usando el componente Button (que creo que era con addEventListener, uno olvida rápido las versiones viejas de AS)
Sorry no miré el resto porque me quedé bizco, pero mira si no puedes optimizar un poco y tener algo así como 30/40 líneas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Jul 2011 12:23 am
Me viene de 10 tu comentario, a mi tampoco me gustaron todos esos IF juntos, de hecho esta iba a ser mi segunda pregunta luego de lograr que se attachen los botones...
Vos podrías darme una mano con eso?
No logro que se muestre en el escenario los botones que se "insertarían" con el FOR.

Saludos y mil gracias!!!
Jonathan.

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 05 Jul 2011 01:31 pm
El problema es que me pierdo con tanto código, te doy otro tip para que reduzcas los if a uno solo, luego ya posteas una cantidad de código aceptable y vemos ese problema

Código ActionScript :

al_clicar.click = function(objetivo) { 
     var k:Number =   Number(objetivo.target.name.substr(5));
      description_txt.model_txt.text = model[k]; 
        description_txt.description1_txt.text = description_1[k]; 
        description_txt.description2_txt.text = description_2[k]; 
        image1_mc.loadMovie(image_1[k]) 
        image2_mc.loadMovie(image_2[k]); 
        image3_mc.loadMovie(image_3[k]); 
      trace("Has pulsado el boton "+k); 
   }


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Jul 2011 05:13 pm
Jorge, aplique lo que me dijiste la verdad, queda mucho mejor... te dejo todo el AS que tengo en el frame

Código ActionScript :

stop();
trace("Valores iniciales en X / Y para los botones");
trace("----------------------------------------------------------------------------------")
var loc_x:Number = (20);
trace(loc_x);
var loc_y:Number = (217);
trace(loc_y);

datasheet = new XML();
datasheet.ignoreWhite = true;
trace("")
trace("Iniciando la carga del la informacion")
trace("----------------------------------------------------------------------------------")
datasheet.onLoad = function (success)
{
    if (success)
    {
   
   datasheet = this.firstChild;
        info = datasheet.childNodes.length;
   trace("Cantidad de posiciones en los ARRAYS: "+ info);
        description_1 = new Array(info);
        description_2 = new Array(info);
        model = new Array(info);
        image_1 = new Array(info);
        image_2 = new Array(info);
        image_3 = new Array(info);
      
        for (i = 0; i < info; i++)
        {   
          model[i] = datasheet.childNodes[i].childNodes[0].firstChild.nodeValue;
            description_1[i] = datasheet.childNodes[i].childNodes[1].firstChild.nodeValue;
            description_2[i] = datasheet.childNodes[i].childNodes[2].firstChild.nodeValue;
            image_1[i] = datasheet.childNodes[i].childNodes[3].firstChild.nodeValue;
            image_2[i] = datasheet.childNodes[i].childNodes[4].firstChild.nodeValue;
            image_3[i] = datasheet.childNodes[i].childNodes[5].firstChild.nodeValue;
         trace("se completo la carga en la posicion_" + i );
        } // end of for
      
        trace ("ARRAYS LISTOS PARA SER UTILIZADOS");
      
        description_txt.model_txt.text = model[0];
        description_txt.description1_txt.text = description_1[0];
        description_txt.description2_txt.text = description_2[0];
        image1_mc.loadMovie(image_1[0])
        image2_mc.loadMovie(image_2[0]);
        image3_mc.loadMovie(image_3[0]);
       
       crearbotones();

    }
    else
    {
        trace ("No se pudo cargar el XML");
    } // end else if
}
datasheet.load("datasheet.xml");



function crearbotones(){
trace("");
trace("Iniciando la funcion que creara los botones");
trace("----------------------------------------------------------------------------------");

for(var i:Number = 0; i<=info; i++){
trace("");
trace("Cantidad de pociciones en ARRAY: " + info);
_root.createEmptyMovieClip("contiene", getTheNextHighestDepth());
_root.contiene.attachMovie(dataSheet_btn,"boton"+i,i);
["boton" + i]_x = loc_x;
trace("");
trace("Boton "+i + " en el esenario");
trace("Ubicacion en X: " + loc_x );
["boton" + i]_y = (loc_y + Number(i * 24));
trace("Ubicacion en Y: " + (loc_y + Number(i * 24)) );

al_clicar = new Object();

al_clicar.click = function(objetivo) {  
     var k:Number =   Number(objetivo.target.name.substr(5)); 
      description_txt.model_txt.text = model[k];  
        description_txt.description1_txt.text = description_1[k];  
        description_txt.description2_txt.text = description_2[k];  
        image1_mc.loadMovie(image_1[k])  
        image2_mc.loadMovie(image_2[k]);  
        image3_mc.loadMovie(image_3[k]);  
      trace("Has pulsado el boton "+k);  
   } 
}
for(var i:Number = 0; i<20; i++){ 
    this["boton"+i].addEventListener("click", al_clicar);  
}

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 05 Jul 2011 05:15 pm
Imprimí muchos Trace para ver si tenia algún error en el AS... pero todo parece estar bien.
Gracias Jorge por la mano que me estas dando!!!

Jonathan.

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 05 Jul 2011 05:18 pm
Ok, estás trazando cantidad de items, posición x e y ... ¿da todo correcto pero no los ves?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Jul 2011 05:32 pm
Así es... da todo OK pero no veo los botones en pantalla.

Controle que el nombre del botón al cual llamo este correcto, dataSheet_btn.
Agregue en LinkAge el mismo nombre, dataSheet_btn.
No se si los botones realmente se ubican donde lo indica el trace que agregue.
No se si el Depth tiene algo que ver.

Probe muchas opciones y continua sin funcionar.

Saludos y gracias por la pronta repuesta!
Jonathan.

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 05 Jul 2011 05:36 pm
¿_root.contiene está en el escenario? ¿Lo ves? Si está vacío, dibujale un garabato rojo para asegurarte que está en el escenario (y que tiene correctamente su nombre de instancia) Si no esta puesto en 0-0 para que coincida, recuerda que las coordenadas son las del clip y no las del escenario

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Jul 2011 05:42 pm
Te dejo lo que tengo en el XML, solo por si quieres realizar alguna prueba.

Es el mismo NODO <info> repetido varias veces.

Código XML :

<datasheet>
   <info>
   <model>A300</model>
   <description1>bla bla bla bla bla bla bla bla description 1</description1>
   <description2>bla bla bla bla bla bla bla bla description 2</description2>
        <image1>gallery/a300/1.jpg</image1>
        <image2>gallery/a300/1.jpg</image2>
        <image3>gallery/a300/1.jpg</image3>
        </info>
</datasheet>

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 05 Jul 2011 05:47 pm
Prefiero que las pruebas las hagas tu ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Jul 2011 06:13 pm
Probé un par de cosas... pero no resultaron, a mi parecer el problema lo tengo con el

["boton" + i]_y = (loc_y + Number(i * 24));

Esta correcto esto? por que cuando publico y entro al frame donde tengo el AS en cuestión toda la película se va para abajo. como si me agregaria algo arriba que proboque esto.


La realidad es que no se si attachea _root.contiene ya que es un EmptyMovieClip, estoy viendo de que manera puedo comprobar esto.

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Jul 2011 12:26 am
Logre que se attachen ahora lo que note es que se enciman uno con otro...

Les dejo el AS.

Código ActionScript :

function crearbotones(){
trace("");
trace("Iniciando la funcion que creara los botones");
trace("----------------------------------------------------------------------------------");

for(var i:Number = 0; i<=info; i++){

var contiener:MovieClip = _root.createEmptyMovieClip("contiene"+i, _root.getNextHighestDepth());
["contiene"+i]_x=loc_x;
["contiene"+i]_y=(loc_y + Number([i] * 24));
["contiene"+i]attachMovie("dataSheet_btn","boton"+i,i);

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Jul 2011 03:14 am
Esta expresión no tiene sentido:

["contiene"+i]_y=(loc_y + Number([i] * 24));

sería

["contiene"+i]_y=(loc_y + (i * 24));

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Jul 2011 12:46 pm
Jorge, ya solucione mi problema gracias por tu ayuda... ahora estoy viendo lo que vos me dejaste para crear los Listener y el New Object, ya que no logro darle funcionalidad a mis botones.


Código ActionScript :

function crearbotones(){

var _locx= 0;
var _locy= 0;

for(var b:Number = 0; b< info; b++){
   
_root.contiene.attachMovie("dataSheet_btn", "boton_" + b, 100 + b);

button = _root.contiene["boton_" + b];
button._x= _locx;
button._y= _locy * 24;
++_locy;
_root.contiene["boton_"+b].addEventListener("click", al_clicar); 


var al_clicar:Object = new Object();
al_clicar.click = function() {  
        var k:Number =   Number(objetivo.target.name.substr(6))); 
         _root.description_txt.model_txt.text = model[k];  
        _root.description_txt.description1_txt.text = description_1[k];  
        _root.description_txt.description2_txt.text = description_2[k];  
        _root.image1_mc.loadMovie(image_1[k])  
        _root.image2_mc.loadMovie(image_2[k]);  
        _root. image3_mc.loadMovie(image_3[k]);  
        trace("Has pulsado el boton " + k);  
   } 
}
for(var b:Number = 0; b<info; b++){ 
    _root.contiene["boton_"+b].addEventListener("click", al_clicar);
}
}

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Jul 2011 01:25 pm
A menos que tus botones sean componentes Button, en AS2 directamente se usa el onPress, no se usa un addEventListener (que es obligatorio en AS3)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Jul 2011 12:59 am
SOLUCIONADOOO!!!! :lol: Las miles lineas se redujeron a tan solo unas pocas... Muchas gracias Jorge por tus TIPS. Dejo el código por si alguien lo necesita.

Código ActionScript :

function crearbotones(){

var _locx= 0;
var _locy= 0;

for(var b:Number = 0; b< info; b++){
   
_root.contiene.attachMovie("dataSheet_btn", "boton_" + b, 100 + b);

button = _root.contiene["boton_" + b];
button._x= _locx;
button._y= _locy * 24;
++_locy;

_root.contiene["boton_" + b].onPress = function(){ 
         k = this._name.substr(6);
        description_txt.model_txt.text = model[k]; 
        description_txt.description1_txt.text = description_1[k]; 
        description_txt.description2_txt.text = description_2[k]; 
        image1_mc.loadMovie(image_1[k]) 
        image2_mc.loadMovie(image_2[k]); 
        image3_mc.loadMovie(image_3[k]);
      trace(k);
}
}
}

Por PX10

70 de clabLevel



 

chrome

 

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