Comunidad de diseño web y desarrollo en internet online

bucle for... aver si alguien se le anima...

Citar            
MensajeEscrito el 01 Mar 2007 02:59 am
Hola!
Ya he queme mi cerebrio con esto, es un rompecabezas que tiene 24 piezas y quiero que cuando selecciono una pieza ésta se draguee, y, cuando la suelte, se deje de draguear y si ésta toca el lugar donde debe encajar, se situe donde pertenece (_x, _y) para esto tengo las 24 piezas ("pieza_")cada una un mc, y 24 lugares ("lugar_") tambien cada uno es un mc.
El problema es que lo resolvi con un "for" y éste hace que la pieza "lugar_" se sobre escriba ... no se si se puede hacer esto con un for o es mejor con array, si se puede con for como lo puedo resolver?????????????
aca esta el AS:

Código :

function armar() {
   for (var i = 0; i<=24; i++) {
      var pieza = _root["pieza_"+i];
      var lugar = _root["lugar_"+i];
      pieza.onPress = function() {
         this.startDrag();
      };
      pieza.onRelease = function() {
         this.stopDrag();
         //EL problema es que "lugar_" se sobrescribe, 
         //por lo tanto todas las piezas se van a quedar en la ultima pieza
         //al publicarlo, solo funcionala ultima pieza, la Nro 24
         //COMO RESUELVO ESTO!!!!!!
         if (this.hitTest([_root+"lugar_"+i])) {
            //
            this._x = ["lugar_"+i]._x;
            this._y = ["lugar_"+i]._y;
                                                                //este trace funciona
            trace(this);
         } else {
            this._x = this._x;
            this._y = this._y;
         }
      };
   }
}

Por GA

26 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 01 Mar 2007 02:38 pm
Pusiste mal el hitTest:

Código :

if (this.hitTest([_root+"lugar_"+i])) {

Código :

if (this.hitTest (_root["lugar_" + i])) {

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 01 Mar 2007 08:25 pm
gracias Hernan por tu ayuda pero de la forma que me decis no funciona ni la pieza 24!! La idea de poner corchetes es para que devuelva el nombre de instancia, me entendes?
if (this.hitTest([_root+"lugar_"+i])) {
osea que [_root+"lugar_"+i] deberia devolver: _root.lugar_1, _root.lugar_2, _root.lugar_3, etc etc...

Gaby

Por GA

26 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 02 Mar 2007 05:37 pm
El error está en la sintaxis. No ponés el root adentro de los corchetes.

Porqué? Bien, pensá que cada instancia en la pantalla es un elemento de un Array asociativo.

Cuando usás un array y querés acceder al elemento de índice 1 no ponés

Código :

[miArray + 1];
Ponés

Código :

miArray[1];
Ves la diferencia?

Además, en lugar de esto:

Código :

this._x = ["lugar_"+i]._x;
this._y = ["lugar_"+i]._y;
Deberías considerar:

Código :

this._x = _root["lugar_"+i]._x;
this._y = _root["lugar_"+i]._y;

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 03 Mar 2007 02:38 am
bueno, con respecto a esto de

Código :

 [_root+"pcia_gris_"+i] 

de la unica forma que me funciona es como te lo muestro mas abajo, aparte que lo voy comprobando mediante " trace". osea, cuando publico la pelicula, al hacer release sobre la pieza 23(por poner un ejemplo) me devuelve "_level0.pcia_23". El problema de mi duda es que al publicar, todas las piezas se pegan en el sector 25 y no se porqué, o es que tengo que ponerle algun "level" ,o un "ID", algo hace conflico, o no se que mas puede ser.
Esta dificil el tema, te mando todo el script para que lo veas y te mando el script del modo "principiante" tal vez te sirve para ver mi forma de pensar.
y aca esta el ejemplo de lo que quiero hacer:
http://www.gbanner.com.ar/inter.htm
(es el ultimo juego)
muchas gracias!!! por tu tiempo!!!

codigo actual:

Código :

armar();
function armar() {
   for (var i = 0; i<=24; i++) {
      var provincia = _root["pcia_"+i];
      var gris = _root["pcia_gris_"+i];
      provincia.onPress = function() {
         this.startDrag();
      };
      provincia.onRelease = function() {
         this.stopDrag();
         //EL problema es que las piezas se "sobrescriben", 
         //por lo que todas las piezas tendran como nombre de inst: "pcia_gris_25"
         if (this.hitTest([_root+"pcia_gris_"+i])) {
            trace(this);
            this._x = gris._x;
            this._y = gris._y;
         } else {
            trace(this)
            this._x = this._x;
            this._y = this._y;
         }
      };
   }
}


codigo antiguo (no pienso hacerlo asi, me reuso):

Código :

//DESDE ACA EL CHORRO////////////////   
pcia_1.onPress = function() {
   this.startDrag();
};
pcia_1.onRelease = function() {
   stopDrag();
   if (pcia_1.hitTest(pcia_gris_1)) {
      pcia_1._x = pcia_gris_1._x;
      pcia_1._y = pcia_gris_1._y;
   }
   pcia_1._x = pcia_1._x;
   pcia_1._y = pcia_1._y;
};
pcia_2.onPress = function() {
   this.startDrag();
};
pcia_2.onRelease = function() {
   stopDrag();
   if (pcia_2.hitTest(pcia_gris_2)) {
      pcia_2._x = pcia_gris_2._x;
      pcia_2._y = pcia_gris_2._y;
   }
   pcia_2._x = pcia_2._x;
   pcia_2._y = pcia_2._y;
};
pcia_3.onPress = function() {
   this.startDrag();
};
pcia_3.onRelease = function() {
   stopDrag();
   if (this.hitTest(pcia_gris_3)) {
      this._x = pcia_gris_3._x;
      this._y = pcia_gris_3._y;
   }
   this._x = this._x;
   this._y = this._y;
};
pcia_4.onPress = function() {
   this.startDrag();
};
pcia_4.onRelease = function() {
   stopDrag();
   if (this.hitTest(pcia_gris_4)) {
      this._x = pcia_gris_4._x;
      this._y = pcia_gris_4._y;
   }
   this._x = this._x;
   this._y = this._y;
};
////////Y EL CHORRRO SIGUE!!!////////

gracias por tu tiempo!!
Gaby

Por GA

26 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 03 Mar 2007 02:23 pm
Si no me equivoco, así debería funcionar

Código :

armar();
function armar() {
   for (var i = 0; i<=24; i++) {
      var provincia = _root["pcia_"+i];
      var gris = _root["pcia_gris_"+i];
      provincia.onPress = function() {
         this.startDrag();
         this.gris = _root["pcia_gris_"+i];
      };
      provincia.onRelease = function() {
         this.stopDrag();
         //EL problema es que las piezas se "sobrescriben", 
         //por lo que todas las piezas tendran como nombre de inst: "pcia_gris_25"
         if (this.hitTest(this.gris) {
            trace(this);
            this._x = this.gris._x;
            this._y = this.gris._y;
         } else {
            trace(this)
            this._x = this._x;
            this._y = this._y;
         }
      };
   }
}

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 04 Mar 2007 10:01 pm
Hola Hernan!
La verdad que mil gracias pòr intentar resolver esto conmigo, puse todo como esta en el script que me mandaste y sigue sin pegarse ninguna pcia en su lugar pero si me devuelve el ultimo trace, me parece que no detecta el codigo

Código :

this.gris = _root["pcia_gris_"+i];

Ya no se que voy a hacer!!!!!
Gaby

Por GA

26 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 05 Mar 2007 12:56 pm
Y si me mandás el .fla a la dirección de mail que ves acá abajo, en mi firma?

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie

 

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