Comunidad de diseño web y desarrollo en internet online

problema arrastrar y soltar

Citar            
MensajeEscrito el 14 Mar 2012 01:49 am
hola que tal hice una animacion de arrastrar y soltar pero tengo dos problemas al dar clic en el objeto ke voy a arrastrar aparece en otro lado y ya no lo puedo subir tanto

y tambien si lo pongo en un lugar incorrecto desaparece aqui les dejo el archivo .fla y el .exe para ke los prueben y vean mas detalladamente el problema

alguien me puede ayudar?

gracias de antemano :)

link:
http://www.mediafire.com/?pu6g0xin1957g2k

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Mar 2012 05:43 pm
Hola.

En la línea 55 en esta función.

function clipPulsado (e: MouseEvent): void
{
this.setChildIndex(MovieClip(e.target), this.numChildren-1);
e.target.startDrag(/*false,this.getRect(this.stage)*/);
}

Comenté el contenido que le pasas al método del startDrag, y anda mejor, sin embargo al soltar en un sitio equivocado regresa a un punto determinado, te recomiendo que al inicar en drag guardes sus coordenadas, así al soltar regresará a su lugar inicial.

Saludos y suerte.

Por jcruz

54 de clabLevel



Genero:Masculino  

Trabajo por comida!

safari
Citar            
MensajeEscrito el 14 Mar 2012 06:35 pm
ya lo solucione con eso que me diste :) tambien comente lo que señalaste y me funciono muy bien lo del arrastrado pues donde lo suelto se queda no tuve idea de como dar coordenadas por que si les daba alguna por ejemplo si ponia
function Soltar(clip: MovieClip)
{
if(clip.destino.hitTestObject(clip))
{
clip.x = clip.destino.x;
clip.y = clip.destino.y;
}
else
{

en esta parte:

clip.x = clip.x -10;
clip.y = clip.y -10;


}
Corregir();
}

cuando lo soltaba se hacia 10 arriba y 10 a la izquierda no se si me explike

si alguien sabe como solucionar lo ultimo se lo agradeceria si no me kedo con donde lo suelte quede

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Mar 2012 07:24 pm
Crea 2 variables numéricas, fuera de cualquier método:

posXini:Number = 0;
posYini:Number = 0;

Y el el método

function clipPulsado (e: MouseEvent): void
{
// Le pones los valores a las primeras variables.
posXini:Number = e.target.x;
posYini:Number = e.target.y;
this.setChildIndex(MovieClip(e.target), this.numChildren-1);
e.target.startDrag(/*false,this.getRect(this.stage)*/);
}

Y luego en el método soltar.

else
{

en esta parte:

clip.x = posXini;
clip.y = posYini;


}


No lo he probado porque estoy un poco atareado, pero sospecho que debe andar.

Suerte.

Por jcruz

54 de clabLevel



Genero:Masculino  

Trabajo por comida!

safari
Citar            
MensajeEscrito el 14 Mar 2012 07:41 pm
que crees que me resulto perfectamente pero tuve que eliminar lo que agregaste en la function clipPulsado

muchas gracias a los dos me solucionaron el problema =)

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Mar 2012 07:50 pm
mooomento XD me acaba de dar otro problema al soltarlos todos me los manda al mismo lugar creia que si me los mandaba a su lugra debido pero todos me los manda al mismo lugar ay alguna forma que no haga esto les dejo el archivo para ke lo vean mas detalladamente:

http://www.mediafire.com/?1lgw59w9a670795

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Mar 2012 08:00 pm
En mi segundo post le dí solución al problema que recién descubres.

Por jcruz

54 de clabLevel



Genero:Masculino  

Trabajo por comida!

safari
Citar            
MensajeEscrito el 14 Mar 2012 08:28 pm
:s como veo tus posts? perdona soy novato en la pagina jeje

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Mar 2012 08:30 pm
o si te refieres a la 2nda respuesta que me pusiste el ejemplo que te puse es con la respuesta que me pusiste no me da =(

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Mar 2012 09:15 pm
Por qué no da? Tira error?

Por jcruz

54 de clabLevel



Genero:Masculino  

Trabajo por comida!

safari
Citar            
MensajeEscrito el 14 Mar 2012 09:38 pm
sucede lo que puse en el 2ndo ejemplo ya no desaparece pero me manda todos a un mismo lugar

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Mar 2012 09:41 pm
posXini:Number = 0;
posYini:Number = 0;

Y el el método

function clipPulsado (e: MouseEvent): void
{
// Le pones los valores a las primeras variables.
posXini:Number = e.target.x;
posYini:Number = e.target.y;
this.setChildIndex(MovieClip(e.target), this.numChildren-1);
e.target.startDrag(/*false,this.getRect(this.stage)*/);
}

Y luego en el método soltar.

else
{

en esta parte:

clip.x = posXini;
clip.y = posYini;


}

Por jcruz

54 de clabLevel



Genero:Masculino  

Trabajo por comida!

safari
Citar            
MensajeEscrito el 14 Mar 2012 10:12 pm
si mira eso si lo hice y me funciono el codigo todo perfecto por que no me desaparecia ninguna palabra pero son 4 variables diferentes las que manejo osea 4 movieclips diferentes al soltar 1 me lo envie a la coordenada que le indique en el codigo que me diste pero al soltar el 2ndo me lo envia a la misma coordenada yo quiero que me las envie a diferentes para que no se encuentren no se si me entienda si no revisa bien el 2ndo ejemplo que puse que es este
http://www.mediafire.com/?1lgw59w9a670795
pruebalo intenta el ejercicio y veras mi problema


:) gracias por la paciencia :)

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Mar 2012 02:38 pm
Hola de nuevo, me pude bajar tu archivo, pero te adjunto lo que creo que necesitas.

http://www.mediafire.com/?84cjbhj4x46u3xu

Por jcruz

54 de clabLevel



Genero:Masculino  

Trabajo por comida!

safari
Citar            
MensajeEscrito el 15 Mar 2012 03:41 pm
resolviste totalmente lo que necesitaba asi es como quiero exactamente que quede solo te pido un favor no se si sea mucha molestia me podrias mandra el .fla en formato cs4 es que no uso otra version y no me dejo abrirlo

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Mar 2012 03:50 pm
Hahahhaha, te paso el código, :)

import flash.events.MouseEvent;
////////////////////////////////////////////////////////////////////////////////////
//VARIABLES

arrastre1.buttonMode = true;
arrastre3.buttonMode = true;
arrastre2.buttonMode = true;

var posXini:Number = 0;
var posYini:Number = 0;

//Esta variable almacena el resultado del juego.
var correcto:Boolean = false;
//Almacena todos los clips de arrastre
var clips:Array = [arrastre1,arrastre2,arrastre3,arrastre4];
//Almacena los nombres de los clips de destino para los clips de arrastre
var destinos:Array = [destino1,destino2,destino3,destino4];


////////////////////////////////////////////////////////////////////////////////////
//FUNCIONES

//Función que se ejecuta al inicio y programa la escena
function Empezar()
{
GuardarDatos();
ProgramarArrastres();
Corregir();
}

//Almacena los datos iniciales de los clips de arrastre como variables dentro de cada clip.
//Estos datos se utilizan despues para ver si se ha dejado sobre el destino, o para colocarlos de nuevo
//en su posición inicial
function GuardarDatos()
{
for (var i = 0;i < clips.length; i++)
{
clips[i].xIni = clips[i]._x;
clips[i].yIni = clips[i]._y;
clips[i].destino = destinos[i];
}
}

//Programa los clips de arrastre, añadiendo a cada uno los eventos onPress y onRelease
function ProgramarArrastres()
{
for(var i = 0; i < clips.length; i++)
{
var clip = clips[i];
clip.addEventListener(MouseEvent.MOUSE_DOWN, clipPulsado);
clip.addEventListener(MouseEvent.MOUSE_UP, clipSoltado);
}
}

function clipPulsado (e: MouseEvent): void
{
posXini = e.target.x;
posYini = e.target.y;
this.setChildIndex(MovieClip(e.target), this.numChildren-1);
e.target.startDrag(/*false,this.getRect(this.stage)*/);
}

function clipSoltado (e: MouseEvent): void
{
e.target.stopDrag();
Soltar(MovieClip(e.target));
}

//Esta función se ejecuta cuando se reproduce el evento onPress de alguno de los clips de
//arrastre. Comprueba si el clip de arrastre está sobre su clip de destino, y si es así, lo
//coloca en la misma posición que este. Si no, lo devuelve a la posición inicial que se ha
//almacenado al principio.
function Soltar(clip: MovieClip)
{
if(clip.destino.hitTestObject(clip))
{
clip.x = clip.destino.x;
clip.y = clip.destino.y;
}
else
{
clip.x = posXini;
clip.y = posYini;
}
Corregir();
}

//Corrige el juego. Recorre todos los clips de arrastre y ve si están colocados
//o no. Modifica los valores de los campos de texto Resuelto_txt y Aciertos_txt
//para mostrar los datos del juego.
function Corregir()
{
var aciertos = 0;
for(var i = 0; i < clips.length; i++)
{
if(clips[i].hitTestObject(destinos[i]))
{
aciertos++;
}
}
correcto = (aciertos == clips.length)?true:false;
Aciertos_txt.text = aciertos.toString();
}

//Empezamos
Empezar();

stop();


SUERTE!

Por jcruz

54 de clabLevel



Genero:Masculino  

Trabajo por comida!

safari
Citar            
MensajeEscrito el 15 Mar 2012 04:09 pm
Mother of my father of my mother of my brother of my daughter of my god :lol:

ya me funciono todo parece indicar que mi problema era que escribia mal esta parte:
function clipPulsado (e: MouseEvent): void
{
posXini = e.target.x;
posYini = e.target.y;

muchas gracias por la paciencia duda resuelta =)

Por sidentelrgamer

61 de clabLevel



 

chrome

 

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