Comunidad de diseño web y desarrollo en internet online

Porfavor Ayuda con el movimiento de un mc en el escenario

Citar            
MensajeEscrito el 29 Abr 2012 02:06 am
Hola, miren, tengo que hacer un juego y no tengo LA MÍNIMA idea de como empezar.
Estoy tratando por lo menos de modificar las acciones de UN SOLO OBJETO.
¿Qué estoy haciendo?
En el escenario tengo un mc con instancia "c1", un cuadro de texto con instacia "t" y quiero que al mover el mc con el mouse, me cambie cierta propiedad y me muestre en el cuadro de texto la posición actual del mc. Tengo este código:

Código :

import flash.events.MouseEvent;
      function m(Event:MouseEvent):void{
         c1.startDrag();
      }
      function n(Event:MouseEvent):void{
         c1.stopDrag();
      }
      c1.addEventListener(MouseEvent.MOUSE_DOWN, m);
      c1.addEventListener(MouseEvent.MOUSE_UP, n);
      t.text=c1.x.toString();
      
   if(c1.x<=50){
      c1.alpha=0.5;
   }else{
      c1.alpha=1;
   }


Se mueve son problema el mc, pero el cuadro de texo y la accion alpha, no me funcionan.

PD: no se como subir mi archjivo de flash aquí para que lo vean.

Por dmperez777

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Abr 2012 11:20 am
¿Por qué corno tenés que hacer un juego y no tenés ni idea de cómo empezar? Suena a que es para un curso al que hasta ahora no le prestaste atención.

No sé sobre functions, import, etc, pero parece que el if está mal puesto, o sea, que yo sepa no puede líneas vacías entre las partes del cñodigo, además está más en la derecha de lo normal (parece). Buscá la opción modo normal, sacá el modo experto, aunque.... si hubiera errores de sintáxis te avisaría no?

Otra cosa que me parece es que el alfa funcionaría cuando el clip está en a la izquierda de algo, es lo que parece. No se te va a cambiar sólo por mover el mc, sino por ponerlo a la izq de algo (desde una línea vertical, para ser más exactos).

Puede que falte la _ a la x, es .x_ creo

Y el alfa yo acostumbro a que vaya de 0 a 100, entre 0.5 y 1 al menos en mi flash no haría diferencia que yo sepa.

Por Tachikomaia

73 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Abr 2012 02:37 pm

Tachikomaia escribió:

¿Por qué corno tenés que hacer un juego y no tenés ni idea de cómo empezar? Suena a que es para un curso al que hasta ahora no le prestaste atención.

No sé sobre functions, import, etc, pero parece que el if está mal puesto, o sea, que yo sepa no puede líneas vacías entre las partes del cñodigo, además está más en la derecha de lo normal (parece). Buscá la opción modo normal, sacá el modo experto, aunque.... si hubiera errores de sintáxis te avisaría no?

Otra cosa que me parece es que el alfa funcionaría cuando el clip está en a la izquierda de algo, es lo que parece. No se te va a cambiar sólo por mover el mc, sino por ponerlo a la izq de algo (desde una línea vertical, para ser más exactos).

Puede que falte la _ a la x, es .x_ creo

Y el alfa yo acostumbro a que vaya de 0 a 100, entre 0.5 y 1 al menos en mi flash no haría diferencia que yo sepa.


Gracias por contestar, pero la sintaxis está bien. Al mover con el MOUSE el mc a la izquierda por debajo de un valor de x = 50, debería aparecer el alpha al 50%.
Al parecer, vos estás confundido porque manejas actionscript 2... mi código es action escript 3.
Y si, ud tiene razón, estoy cursando una materia en la U donde casi no nos explican y el juego es para el lunes (mañana).
buen día. Sea feliz.

Por dmperez777

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Abr 2012 05:30 pm
hola, no se si hace falta poner toString();
quisas me equivoque, pero en mi exp, con solo poner mc.x ya esta
ademas, fijate q tipo de campo de texto usas, xq no todos les podes pasar textos o cambiarselos.
desp, que tipo de juego queres ahcer, capas seria mas facil ayudarte :)

lo del texto, ponelo en un ENTER_FRAME (evento).
si no conoces como se hace, busca, es muy facil jeje, pero basicamente tuTexto.text = "x = " + mc.x;
asi muestra X (dentro del enter frame)

Por skaterseba

Claber

170 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Abr 2012 07:59 pm
Mira, te lo voy a explicar bien.
Lo primero

Tachikomaia escribió:

¿Por qué corno tenés que hacer un juego y no tenés ni idea de cómo empezar? Suena a que es para un curso al que hasta ahora no le prestaste atención.
Eso es algo que ni a tí ni a mí nos incunde, para responder algo así es mejor que te calles y no digas nada, lo digo por tí.

Tachikomaia escribió:

No sé sobre functions, import, etc,
¿Entonces para que te metes en un tema que trata de funciones?, again hubiese sido mejor callarse.

Tachikomaia escribió:

pero parece que el if está mal puesto, o sea, que yo sepa no puede líneas vacías entre las partes del cñodigo, además está más en la derecha de lo normal (parece).
El if está perfectamente puesto, y las tabulaciones no afectan en nada al código, de nuevo hubiese sido mejor mantener la boca cerrada.

Tachikomaia escribió:

Otra cosa que me parece es que el alfa funcionaría cuando el clip está en a la izquierda de algo, es lo que parece. No se te va a cambiar sólo por mover el mc, sino por ponerlo a la izq de algo (desde una línea vertical, para ser más exactos).
No, no es lo que parece, lo que parece es que cuando la posicion x del objeto que estás moviendo supere el registro x 50 de la película cambiará, por lo que si va a cambiar con sólo mover el mc, así que no depende de ningún objeto, de nuevo un silencio hubiese sido maravilloso.

Tachikomaia escribió:

Puede que falte la _ a la x, es .x_ creo
Y el alfa yo acostumbro a que vaya de 0 a 100, entre 0.5 y 1 al menos en mi flash no haría diferencia que yo sepa.
Desde AS3, ya no se usa "_" y el alfa de 0 a 1, si desconoces algo, intenta evitar malinformar. Además no se ponía detrás de la propiedad, se ponía delante '_x, _y, _alpha'. Silencio divino tesoro...

Tachikomaia, ¿Esto que nos deja?, usabilidad de tu post 0.00000000000000%%% increíble.

Bueno ahora vamos a ver la consulta que hacías, te lo explico todo en el código, por supuesto puede contener errores, pues yo tampoco soy un hacha, aunque no creo que te desinforme demasiado o tanto como Tachikomaia:

Código ActionScript :

//Lo primero en AS3 es importar siempre todas las clases que vallas a usar
//en este caso MouseEvent y MovieClip,
//aún no he usado textos en as3, por lo que no se si también habría que importar textField
import flash.events.MouseEvent;
import flash.display.MovieClip;

//Aunque tengas los elementos en el escenario, es bueno declararlos en variables
//Y decirle al compilador como que ha de tratar esa variable
var objetoA:MovieClip = getChildByName('c1') as MovieClip;
//Si quieres que salga la manita activas el modo button mode
objetoA.buttonMode = true;
//Agregas sólo el listener del MOUSE_DOWN
//Esto es debido a que de momento MOUSE_UP es un listener innecesario
//Así que lo vincularemos cuando hagamos click en el objeto
objetoA.addEventListener(MouseEvent.MOUSE_DOWN, mover);

function mover(Event:MouseEvent):void{
   //Ahora lo que hacemos es recoger el evento de los parámetros
   //Y su objetivo, en este caso 'c1' lo almacenamos en una variable
   //miMC en este caso
   var miMC:MovieClip = Event.target as MovieClip;
   
   //Ahora los listeners hay varias cosas a saber
   //Lo primero eliminaremos el MOUSE_DOWN, pues ya no nos hará falta
   //por lo menos hasta que soltemos el objeto
   miMC.removeEventListener(MouseEvent.MOUSE_DOWN, mover);
   //Ahora le agregamos al stage el MOUSE_UP
   //¿Por que al stage?
   //Bueno el movieCLip lo podrías estar moviendo tan rápido
   //que al soltar el click, el movie clip aún no estuviese bajo el mouse
   //con lo que miMC no dispararía el evento, sin embargo, hagas lo que hagas, stage lo captará
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
   //Y por último le añadimos otro listener al mc MOUSE_MOVE
   //Que se disparará cada vez que movamos el mc,
   //y ejecutará la funcion obtenerPropiedades,
   //que se encargara de detectar la posicion  del mc y cambiar su alfa y el texto
   miMC.addEventListener(MouseEvent.MOUSE_MOVE, obtenerPropiedades);
   
   //Y por último lo arrastramos
   miMC.startDrag();
}

function soltar(Event:MouseEvent):void{
   //Lo mismo que antes almacenamos el objetivo del evento del mouse en una variable
   //Antes no lo he dicho, pero de esta manera la función nos valdrá para cualquier mc que arrastremos
   //sin necesidad de volver a escribir la función
   var miMC:MovieClip = Event.target as MovieClip;

   //Lo primero que hacemos es quitar el listener de stage pues ya no lo necesitaremos
   //por lo menos hasta que lo volvamos a arrastrar
   //en cuyo caso lo activara la funcion mover
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   //Le quitamos tambien el listener MOUSE_MOVE a obtenerPropiedades
   miMC.removeEventListener(MouseEvent.MOUSE_MOVE, obtenerPropiedades);
   //Y por último le volvemos a activar el MOUSE_DOWN por si lo queremos volver a mover
   miMC.addEventListener(MouseEvent.MOUSE_DOWN, mover);
   
   //Y cómo no, dejamos de arrastrarlo
   miMC.stopDrag();
}

//Esta función saltará cada vez que el mc que estemos arrastrando se mueva
function obtenerPropiedades (evento:MouseEvent):void {
   //Como siempre almacenamos el objetivo
   var miMC:MovieClip = evento.target as MovieClip;
   //Ahora hacemos el condicional, daría igual dejarlo en 5 líneas,
   //yo lo pongo en 2, por que mirando grandes bloque de código me ayuda a reconocerlos mejor
   if (miMC.x <= 50) {miMC.alpha = 0.5}
   else {miMC.alpha = 1}
   //Y por último cambiamos el texto
   texto.text = String(miMC.x));
}


Espero te sirva,
Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 29 Abr 2012 08:31 pm

Abducted escribió:

Mira, te lo voy a explicar bien.
Lo primero

Tachikomaia escribió:

¿Por qué corno tenés que hacer un juego y no tenés ni idea de cómo empezar? Suena a que es para un curso al que hasta ahora no le prestaste atención.
Eso es algo que ni a tí ni a mí nos incunde, para responder algo así es mejor que te calles y no digas nada, lo digo por tí.

Tachikomaia escribió:

No sé sobre functions, import, etc,
¿Entonces para que te metes en un tema que trata de funciones?, again hubiese sido mejor callarse.

Tachikomaia escribió:

pero parece que el if está mal puesto, o sea, que yo sepa no puede líneas vacías entre las partes del cñodigo, además está más en la derecha de lo normal (parece).
El if está perfectamente puesto, y las tabulaciones no afectan en nada al código, de nuevo hubiese sido mejor mantener la boca cerrada.

Tachikomaia escribió:

Otra cosa que me parece es que el alfa funcionaría cuando el clip está en a la izquierda de algo, es lo que parece. No se te va a cambiar sólo por mover el mc, sino por ponerlo a la izq de algo (desde una línea vertical, para ser más exactos).
No, no es lo que parece, lo que parece es que cuando la posicion x del objeto que estás moviendo supere el registro x 50 de la película cambiará, por lo que si va a cambiar con sólo mover el mc, así que no depende de ningún objeto, de nuevo un silencio hubiese sido maravilloso.

Tachikomaia escribió:

Puede que falte la _ a la x, es .x_ creo
Y el alfa yo acostumbro a que vaya de 0 a 100, entre 0.5 y 1 al menos en mi flash no haría diferencia que yo sepa.
Desde AS3, ya no se usa "_" y el alfa de 0 a 1, si desconoces algo, intenta evitar malinformar. Además no se ponía detrás de la propiedad, se ponía delante '_x, _y, _alpha'. Silencio divino tesoro...

Tachikomaia, ¿Esto que nos deja?, usabilidad de tu post 0.00000000000000%%% increíble.

Bueno ahora vamos a ver la consulta que hacías, te lo explico todo en el código, por supuesto puede contener errores, pues yo tampoco soy un hacha, aunque no creo que te desinforme demasiado o tanto como Tachikomaia:

Código ActionScript :

//Lo primero en AS3 es importar siempre todas las clases que vallas a usar
//en este caso MouseEvent y MovieClip,
//aún no he usado textos en as3, por lo que no se si también habría que importar textField
import flash.events.MouseEvent;
import flash.display.MovieClip;

//Aunque tengas los elementos en el escenario, es bueno declararlos en variables
//Y decirle al compilador como que ha de tratar esa variable
var objetoA:MovieClip = getChildByName('c1') as MovieClip;
//Si quieres que salga la manita activas el modo button mode
objetoA.buttonMode = true;
//Agregas sólo el listener del MOUSE_DOWN
//Esto es debido a que de momento MOUSE_UP es un listener innecesario
//Así que lo vincularemos cuando hagamos click en el objeto
objetoA.addEventListener(MouseEvent.MOUSE_DOWN, mover);

function mover(Event:MouseEvent):void{
   //Ahora lo que hacemos es recoger el evento de los parámetros
   //Y su objetivo, en este caso 'c1' lo almacenamos en una variable
   //miMC en este caso
   var miMC:MovieClip = Event.target as MovieClip;
   
   //Ahora los listeners hay varias cosas a saber
   //Lo primero eliminaremos el MOUSE_DOWN, pues ya no nos hará falta
   //por lo menos hasta que soltemos el objeto
   miMC.removeEventListener(MouseEvent.MOUSE_DOWN, mover);
   //Ahora le agregamos al stage el MOUSE_UP
   //¿Por que al stage?
   //Bueno el movieCLip lo podrías estar moviendo tan rápido
   //que al soltar el click, el movie clip aún no estuviese bajo el mouse
   //con lo que miMC no dispararía el evento, sin embargo, hagas lo que hagas, stage lo captará
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
   //Y por último le añadimos otro listener al mc MOUSE_MOVE
   //Que se disparará cada vez que movamos el mc,
   //y ejecutará la funcion obtenerPropiedades,
   //que se encargara de detectar la posicion  del mc y cambiar su alfa y el texto
   miMC.addEventListener(MouseEvent.MOUSE_MOVE, obtenerPropiedades);
   
   //Y por último lo arrastramos
   miMC.startDrag();
}

function soltar(Event:MouseEvent):void{
   //Lo mismo que antes almacenamos el objetivo del evento del mouse en una variable
   //Antes no lo he dicho, pero de esta manera la función nos valdrá para cualquier mc que arrastremos
   //sin necesidad de volver a escribir la función
   var miMC:MovieClip = Event.target as MovieClip;

   //Lo primero que hacemos es quitar el listener de stage pues ya no lo necesitaremos
   //por lo menos hasta que lo volvamos a arrastrar
   //en cuyo caso lo activara la funcion mover
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   //Le quitamos tambien el listener MOUSE_MOVE a obtenerPropiedades
   miMC.removeEventListener(MouseEvent.MOUSE_MOVE, obtenerPropiedades);
   //Y por último le volvemos a activar el MOUSE_DOWN por si lo queremos volver a mover
   miMC.addEventListener(MouseEvent.MOUSE_DOWN, mover);
   
   //Y cómo no, dejamos de arrastrarlo
   miMC.stopDrag();
}

//Esta función saltará cada vez que el mc que estemos arrastrando se mueva
function obtenerPropiedades (evento:MouseEvent):void {
   //Como siempre almacenamos el objetivo
   var miMC:MovieClip = evento.target as MovieClip;
   //Ahora hacemos el condicional, daría igual dejarlo en 5 líneas,
   //yo lo pongo en 2, por que mirando grandes bloque de código me ayuda a reconocerlos mejor
   if (miMC.x <= 50) {miMC.alpha = 0.5}
   else {miMC.alpha = 1}
   //Y por último cambiamos el texto
   texto.text = String(miMC.x));
}


Espero te sirva,
Un saludo.


Sobremanera le agradezco. Espero algún día ser un usuario util como ud. A mi también me enferma ocupar espacio en un foro sin aportar nada.
Lucharé por eso.
buen día y gracias nuevamente.

Por dmperez777

10 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Abr 2012 02:32 am
Al creador del tema me alegro que haya resuelto su problema.

Abducted escribió:

Eso es algo que ni a tí ni a mí nos incunde
No intenté averiguarlo, sólo fue una expresión como la que estás haciendo ¿para qué? Para cambiar la actitud, si yo hago un post insultando te molesta, igual que a mí si me insultan, y también me molesta un poco que la gente no estudie y después ande desesperada porque le resuelvan los problemas los demás.

para responder algo así es mejor que te calles y no digas nada, lo digo por tí
No fue lo único que dije, ese coment está de más; no posteo si sólo es para decir algo así.

Tachikomaia escribió:

No sé sobre functions, import, etc,
¿Entonces para que te metes en un tema que trata de funciones?, again hubiese sido mejor callarse.
Otro comentario que está de más, pues que no entienda de funciones y que el código tenga funciones no significa que nada entienda de él, pues una función se compone de código "normal" en varias partes, que sí entiendo.

El if está perfectamente puesto, y las tabulaciones no afectan en nada al código, de nuevo hubiese sido mejor mantener la boca cerrada.
Tampoco es muy aceptable que digas esto, porque lo mío fue un comentario intentando decir lo que a mí me parece que podía ser el problema, lo que yo intentaría para arreglarlo. Si no sirve, bueno, me equivoqué, si tú nunca te equivocas bien por ti, pero comprende que es algo normal en los seres humanos.

Tachikomaia escribió:

Otra cosa que me parece es que el alfa funcionaría cuando el clip está en a la izquierda de algo, es lo que parece. No se te va a cambiar sólo por mover el mc, sino por ponerlo a la izq de algo (desde una línea vertical, para ser más exactos).
No, no es lo que parece, lo que parece es que cuando la posicion x del objeto que estás moviendo supere el registro x 50 de la película cambiará, por lo que si va a cambiar con sólo mover el mc, así que no depende de ningún objeto, de nuevo un silencio hubiese sido maravilloso.
De eso no entendí lo que dijiste, pero creo que concuerdo en esto:
lo que parece es que cuando la posicion x del objeto que estás moviendo supere el registro x 50 de la película cambiará
pues es lo que dije, con otras palabras, pero no concuerdo con esto:
por lo que si va a cambiar con sólo mover el mc
Justamente por lo que acabas de decir: "cuando la posicion x del objeto que estás moviendo supere el registro x 50 de la película cambiará", mientras no suceda eso, no cambiará.

Desde AS3, ya no se usa "_" y el alfa de 0 a 1, si desconoces algo, intenta evitar malinformar. Además no se ponía detrás de la propiedad, se ponía delante '_x, _y, _alpha'. Silencio divino tesoro...
Eres un troll, no me jodas más (si es para hablarrne o hablar de mí haz silencio tú), expliqué bien que eso era en mí flash y si no expliqué que uso set property en vez de ._x o lo que sea, fue porque ya lo había dicho en otros temas, y no quiero escribir a cada rato lo mismo.

Por Tachikomaia

73 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Abr 2012 07:27 am
1º- Si no sabes, no ayudes.
2º- Si te sientan mal mis comentarios, haz examen de conciencia, que pareces un crio de 3 años.
3º- Has perdido tu tiempo escribiendo sandeces, y lo que es infinitamente mas importante, me has hecho perder el mio y el de otros usuarios leyendo tus tonterias.

Crece un poco chaval...

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

safari
Citar            
MensajeEscrito el 30 Abr 2012 01:42 pm
El hecho de crear un tema, significa el poder ayuadar si se tiene la capacidad.
Pueden haber haber respuestas correctas y erroneas. Claro, si una persona iensa ayudar, es un aporte muy bien recibido, pero, si es mejor tratar de estar seguro de lo que se dice. Bueno, eso no importa. El punto es que al ser cerado un tema, se debe tmar como un foro de soluciones, no un foro para entrar en animadversiones con otros usuarios.
Agradezco a todos sus respuestas.
Sean felices.

Por dmperez777

10 de clabLevel



 

chrome

 

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