Comunidad de diseño web y desarrollo en internet online

AS3 - Ejercicio con el mouse

Citar            
MensajeEscrito el 28 Jun 2008 07:04 pm
Hola de nuevo otra dudita :cool:
bueno estoy haciendo un pequeño jueguito donde en el escenario tengo varios estrellitas(instancias de estrella_mc), bueno la estrella cada vez que el mouse pasa sobre ella(MOUSE.OVER) se agranda un poquito y cuando lo saco se regresa a su estado normal, y cuando le haga click la estrellita se desaparecera hasta acabar con todas las estrellas.

Pero cuando paso el mouse sobre la primera estrella que cree, solo me funciona con esa y con ninguna otra, le puse el mismo nombre de instancia a todas las estrellas o tengo que ponerle a cada uno un nombre diferente, pues si es asi si lo puedo hacer, pero hay otra forma de controlar sin necesidad de repetir el codigo para cada estrella con un nombre de instancia diferente??

gracias de antemano, un saludo a todos los de Cristalab.

Por robertdiazg

4 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 28 Jun 2008 08:53 pm
Utilizando ciclos o loops, ejemplo:

Código :

var i:uint;
var estrella:Sprite;

for(i = 0; i < 10; i++){

    estrella = new estrella_mc;

    addChild(estrella).name = "estrella" + i;
    
    estrella.addEventListener(MouseEvent.CLICK, hideStar);

}


Todas las estrellas tendrán un nombre de instancia diferente, sin embargo todas tendrán el mismo evento de mouse "hideStar"

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 28 Jun 2008 10:31 pm
:( oye elchininet pues el concepto esta muy bien pero (no es por criticar) creo que tiene un par de errores en el código, no se si es porque lo escribiste asi nomas o tal ves solo le estabas dando idea de para donde deveria encaminar...

yo mas que nadie creo que soy de esas personas que no me gusta que me digan como es que debo programar jaja pero muchas veces trabajando con grupos de programadores me he dado cuenta que algunas cosas que yo hacia estaban "mal aplicadas" y lo mismo le paso a mis compañeros cuando vieron que algunas cosas las aplicaba mejor de ellos. eso es evolucionar mirando ejemplos y es, creo yo, la mejor forma de aprender.. por ello no lo tomes a mal y te voy a dar un consejo de como se encararía un código..

yo por ejemplo lo escribiría asi.

Código :

function setEstrellas():void{
   for(var i:int=0;i<100;i++){
       var estrella:Sprite= new Sprite();
       estrella.name=Sprite("star"+i);
      estrella.mouseChildren=false;
      estrella.addEventListener(MouseEvent.MOUSE_OVER,someFunction);
      addChild(estrella);
   }
}
setEstrellas();


te preguntaras porque coloque todo dentro de una función?
porque es una cuestion de orden y manejo del codigo y por otra parte de esta manera
las variables quedan encapsuladas dentro de la misma y puedo usarlas en otras funciones
sin que me tire errores de variables duplicadas.
por otra parte cuando mezclamos Strings con Int o Number debemos especificar que
esa suma devuelve en un string para evitar errores ejemplo String("text"+Number);

te repito no lo tomes como una critica sino como un consejo porque yo ya pase por eso jajaja :wink:

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 29 Jun 2008 12:06 am
@phoxer Si no es una crítica no se que cosa has hecho, solo puse lo que preguntaba el usuario, en realidad lo mejor no es crear una función sino crear una clase que haga el trabajo de hacer las estrellitas y darle acciones, pero el objetivo no es que escriba una clase como si estuviera haciendo un trabajo profesional, sino que aclare solamente al usuario algo básico como es darle acciones a los objetos mediante un ciclo.

Te aclaro que cuando se va a sumar un string más un número no hace falta aclararle al flash que te devuelva un string lo hará automáticamente, esto hazlo encarecidamente cuando desees que te devuelva un número u otra variable que pudiera crear confusión a la hora de compilar, pero no hay forma posible de que sumes "botón" + i y te devuelva otra cosa que no sea un string, esto es un método utilizado hasta en los livedocs de adobe.

Si has pasado por eso que podré decir yo que también pasé por eso hace mucho tiempo... hace alrededor de 10 años que vengo trabajando con AS y un poco más con flash porque empecé con el macromedia flash, el primero. Y más de 5 años dando clases en la Universidad de Herrameintas de Autor.

Discúlpame, si no ha sido tu intención, por lo menos has logrado que no me haya gustado tu comentario, en mi opinión ha quedado un poco feo de tu parte.

Saludos

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 Jun 2008 12:21 am
ok . si mi intencion no fue hacerte una critica y claro que estoy de acuerdo contigo de que lo mejor es hacer una clase que maneje dicha función, pero tu como profesor entonces sabes bien que lo mejor, para alguien que recien comienza, es explicarle ciertas cosas , quizas es verdad aquí no era necesario, solo fue una sugerencia por mi parte para que los chicos que empiezan en as puedan darse una idea de como hacer las cosas "moderadamente" bien y lo principal es que lo entiendan.. disculparme nuevamente si te molesto mi comentario (claro ejemplo de no te metas donde no te llaman jaja U_U ) saludos.

pd: el ActionScript no viene desde el flash 4 ?? :roll:

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 29 Jun 2008 12:36 am
Lo mejor entonces es haber adicionado (que para eso está el foro), por ejemplo, te recomiendo también que hagas esto y esto, y no decirme que hay errores en lo que he puesto si realmente no los hay, a diferencia del tuyo que en vez de poner String("star"+i); has puesto Sprite("star"+i); y esto podría llegar a confundir ya que aquí si saltaría un error, pero la tarea del que venga atrás es aclarar el error no decir te voy a dar una clase de como se hace, porque yo estoy más que seguro de que tu sabes como se hace, solamente te equivocaste transcribiendo por lo que te decía, porque no estás haciendo un trabajo profesional, solamente estás aportando algo básico en el foro.

Tomalo de buen rollo, estoy seguro ahora que no lo hiciste con la intención que creí anteriormente, solamente querías aportar y disculpa si me expresé mal contigo.

Saludos y disculpa, no soy tan "pesao" como habrás pensado por mi anterior comentario

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 Jun 2008 12:43 am
nhaa todo bien por supuesto, como te dije no era mi intención corregirte a vos por eso yo aclare
yo mas que nadie creo que soy de esas personas que no me gusta que me digan como es que debo programar

pero siempre estoy sujeto a "sugerencias"
mi comentario solo fue para que este chico no se envuelva en el problema de pisar variables nomas. que es un problema por el cual yo ya pase antes. ^^

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 29 Jun 2008 01:10 am
jaja vos también sos de doble nacionalidad??

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 29 Jun 2008 10:14 pm
oh oh, bueno gracias por las respuestas, voy a probarlo a ver como va, saben entiendo algo de programación pero no mucho de POO, pero como podria hacerlo si quisera con clases, es decir en archivos .as, pero no de la forma que uno crea un .as y lo jalas al .as desde un frame de as.
bueno. lo que esxplique si por las dudas era crear un fondo negro con bastantes estrellas, cuando pase el puntero(mano) por cada una de las estrellas se agrande ligeramente y cuando presione la estrella con el click se desaparezca eso es todo parece fácil.

bueno y tambien vi en un juego que lo llaman lapiz magico que salia primero un dibujo para colorear y cuando movias el lapiz(puntero) este se cambiaba de color cuando pasaba por una parte del dibujo y lo pintaba, es decir si la parte que toco el lapiz era rojo el puntero era rojo y iba pintando todo, solo moviendo el mouse sin presionar nada, son juegos para niños de 3 años. ellos aun no saben hacer click.

Por robertdiazg

4 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 30 Jun 2008 09:34 am
@phoxer todavía no tengo doble nacionalidad, jaa. En Madrid solo tengo residencia por contrato de trabajo ;)

@robertdiazg es un poco complicado explicarte lo de las clases en un solo post, pásate por la sección de aportes del foro y descarga:

- OReilly - Learning ActionScript 3.0 - A Beginners Guide
- OReilly - Essential ActionScript 3.0
- OReiily - ActionScript 3 Cookbok

Ahí está muy bien tratado el tema de las clases, ve estudiándolas y las dudas que vayas teniendo no dudes en postearlas.

Saludos

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Jun 2009 04:31 pm
pon ejemplos, se mas completo.

Por erudito25

1 de clabLevel



 

msie7

 

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