Comunidad de diseño web y desarrollo en internet online

Combinar for y hitTest

Citar            
MensajeEscrito el 10 Jul 2009 07:44 pm
Hola a todos. He estado mirando el tutorial de arrastre y pegado, y ahora estoy intentando cambiarlo para ir aprendiendo.
Quiero que un clip pueda arrastrarse dentro de otros cinco, no sólo a uno. Por eso, he incluido un loop con for.




Código ActionScript :

on (press) { 
   startDrag(this); 
   Mouse.hide(); 
} 
on (release) { 
   stopDrag(); 
   Mouse.show(); 
   for (i=1; i<=5; ++i) { 
      if (_root.la.hitTest(_root["hueco"+i])) { 
         _root.la._x = _root["hueco"+i]._x; 
         _root.la._y = _root["hueco"+i]._y; 
      } else if (!_root.la.hitTest(_root["hueco"+i])) { 
         _root.la._x = _root.lainicioX; 
         _root.la._y = _root.lainicioY; 
      } 
   } 
}




Con este código, el clip "la" siempre vuelve a "lainicioX" y nunca se queda en uno de los huecos. Si quito el "else if", el clip "la" se ajusta al hueco, pero lógicamente no vuelve a su posición. He probado con un "else" en vez de "else if", pero el resultado es el mismo con ambos. Si quito el loop, y le digo directamente "hueco1", con un "else" los clips vuelven a su posición sin problemas.

¿Alguna solución?

Gracias por adelantado.

Por NoEspace

11 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Jul 2009 10:41 pm
mhh y si intentas en tu on (release) { stopDrag(); Mouse.show();
creo que deberias cerrarlo en el mouse show porque toda la orden esta siendo desde que le das el release, no se si sea eso pero pues es nadamas poner una llave. U_U

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 11 Jul 2009 11:32 am
Pero el "for" no lo puedo dejar fuera del "on (release)". Es el código de un botón, así que lo tengo que poner dentro de un "on".

Por NoEspace

11 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Jul 2009 01:14 am
mira ya lo chque y si me funciono, deja prueba con el for a la mejor eso es lo que te afecta y tambien cambie las cosas asi
cosa.onPress = function() {
startDrag(this);
Mouse.hide();
};
cosa.onRelease = function() {
stopDrag();
Mouse.show();
for (i=1; i<=5; ++i) {
if (_root.cosa.hitTest(hueco)) {
_root.cosa._x = hueco._x;
_root.cosa._y = hueco._y;
} else if (!_root.cosa.hitTest(hueco)) {
_root.cosa._x = _root.cosainicioX;
_root.cosa._y = _root.cosainicioY;
}
}
};

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 12 Jul 2009 01:16 am
o una duda, que se supone que hace tu "for"??? crea 5 huecos?

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 12 Jul 2009 01:20 am
ah ya vi
cosa.onPress = function() {
startDrag(this);
Mouse.hide();
};
cosa.onRelease = function() {
stopDrag();
Mouse.show();
for (i=1; i<=5; ++i) {
if (_root.cosa.hitTest(_root["hueco"+i])) {
_root.cosa._x = _root["hueco"+i]._x;
_root.cosa._y = _root["hueco"+i]._y;
} else if (!_root.cosa.hitTest(_root["hueco"+i])) {
_root.cosa._x = _root.cosainicioX;
_root.cosa._y = _root.cosainicioY;
}
}
};
no funciona pero si me contestas lo que te pregunte arriab es por eso o_0, si quieres crar 5 huecos tienes que usar otro codigo

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 12 Jul 2009 01:48 pm
Lo primero, gracias por las respuesta, Dave.

No hace falta crear los 5 huecos. Ya hay 5 MCs que se llaman "hueco1", "hueco2", "hueco3, "hueco4" y "hueco5".

Con este código, todo funciona bien:

cosa.onPress = function() {
startDrag(this);
Mouse.hide();
};
cosa.onRelease = function() {
stopDrag();
Mouse.show();
if (_root.cosa.hitTest (hueco1)) {
_root.cosa._x = hueco1._x;
_root.cosa._y = hueco1._y;
} else {
_root.cosa._x = _root.cosainicioX;
_root.cosa._y = _root.cosainicioY;
}
}

Pero así sólo afecta al "hueco1". Para que funcione con todos los huecos, introduzco un "for" dentro del onRelease:

for (i=1; i<=5; ++i) {
if (_root.cosa.hitTest(_root["hueco"+i])) {
_root.cosa._x = _root["hueco"+i]._x;
_root.cosa._y = _root["hueco"+i]._y;
} else {
_root.cosa._x = _root.cosainicioX;
_root.cosa._y = _root.cosainicioY;
}
}

Ahora, con este for, la "cosa" no se queda en los huecos, aunque haya contacto con ellos; siempre vuelve a su punto de inicio. He probado con "else if" y con "else (!_root.cosa.hitTest(_root["hueco"+i]))", y en ambos casos ocurre esto. Si lo dejo así:

for (i=1; i<=5; ++i) {
if (_root.cosa.hitTest(_root["hueco"+i])) {
_root.cosa._x = _root["hueco"+i]._x;
_root.cosa._y = _root["hueco"+i]._y;
}
}

Funciona bien. La "cosa" se queda centrada en los huecos, pero también se queda en cualquier punto en el que suelte el ratón.

Espero que se entienda.

Por NoEspace

11 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Jul 2009 06:16 pm
aer deja lo pruebo a ver si de pura casualidad logro hacerlo funcionar

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 13 Jul 2009 06:23 pm
o_0 bien ya lo probe, dodne no funciona es en "hueco"en hueco 2 hueco 3 hueco 4 y hueco 5 si funciona y es porque es hueco +i y nunca es hueco nomas deja ver como l osoluciono

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 13 Jul 2009 06:30 pm
cosa.onPress = function() {
startDrag(this);
Mouse.hide();
};
cosa.onRelease = function() {
stopDrag();
Mouse.show();
for (i=0; i<=5; ++i) {//a cada hueco ponle, hueco1,hueco2,hueco3,hueco4,hueco5
lo que pasa era que siempre era hueco +1 entonces nunca era hueco o_0
if (_root.cosa.hitTest(_root["hueco"+i])) {
_root.cosa._x = _root["hueco"+i]._x;
_root.cosa._y = _root["hueco"+i]._y;
} else {
_root.cosa._x = _root.cosainicioX;
_root.cosa._y = _root.cosainicioY;
}
}
};
ok, asi si funciona, lo que esta mal es que si le pongo valor a iniciox e inicioy se mueve para esa posicion de x =/ ahora deja veo como solucionar eso

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 13 Jul 2009 08:07 pm
te he fallado =/ ya intente todo aunque la esperanza sigue ahi, pero voya comer y a ahcer otras cosas, si le vas a intentar prueba poner el codigo fuera del onrelease

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 13 Jul 2009 08:07 pm
te he fallado =/ ya intente todo aunque la esperanza sigue ahi, pero voya comer y a ahcer otras cosas, si le vas a intentar prueba poner el codigo fuera del onrelease

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 13 Jul 2009 08:31 pm
No me has fallado, Davo, hombre. Al menos lo has intentado. Ya lo probaré como dices y si no, me busco la forma de hacerlo de otra forma. Muchas gracias.

Por NoEspace

11 de clabLevel



Genero:Masculino  

firefox

 

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