Foros del Web » Programando para Internet » Javascript »

Eventos Propios de Objetos Propios

Estas en el tema de Eventos Propios de Objetos Propios en el foro de Javascript en Foros del Web. Hola amigos se me ha dado por intentar romperme la cabeza "otra vez" con la programación concretamente con el intento de la realización de un ...
  #1 (permalink)  
Antiguo 19/03/2013, 05:13
 
Fecha de Ingreso: marzo-2013
Mensajes: 3
Antigüedad: 11 años, 1 mes
Puntos: 0
Pregunta Eventos Propios de Objetos Propios

Hola amigos se me ha dado por intentar romperme la cabeza "otra vez" con la programación concretamente con el intento de la realización de un (ejemplo tuto) juego, basado en varias estrategias JS.

Dispongo del siguiente codigo.

Código PHP:
<script language="javascript" type="text/javascript">
function 
Animal(especie) {
  
//objeto Animal.
  //propiedades
  
this.vidas=7;
  
this.sonido="Miau!!!!";
  
this.especie=especie;

  
//metodos
  
this.maulla=Maulla;
  
this.muerde=Muerde;
  
  
//eventos
  
this.onMuerde=new Function();
  
this.onMaulla=new Function();

  return 
this;
}

function 
Maulla() {
  
//Metodo del objeto Animal
  
alert(this.sonido);
  
this.onMaulla(); // <<-- da una incogruencia aki
}

function 
Muerde(aQuien) {
  
//Metodo del objeto Animal
  
aQuien.vidas-=1;
  
this.onMuerde();
}


var 
Roger=new Animal("Gato");
var 
Michael=new Animal("Perro");
Roger.onMaulla=Michael.muerde(Roger);
Michael.onMuerde=RogerEsMordido();

function 
RogerEsMordido() {
  if (
Roger.vidas>0Roger.maulla();
  else 
Roger=null;
}
  
//window.addEventListener("onload", Roger.maulla(), false);
Roger.maulla();
</script> 
En teoria deberia ocurrir una especie de blucle, en la realidad es que me dice que this.OnMaulla no es una función.

Michael ["perro"] muerde a Roger ["gato"] cada vez que maulla
El gato maulla cada vez que lo muerden
Cada vez que lo muerden pierde 1 vida hasta que muere [objeto null].
NO se porque no funciona.

Última edición por Andurino; 19/03/2013 a las 05:42
  #2 (permalink)  
Antiguo 19/03/2013, 05:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Eventos Propios de Objetos Propios

Debes repasar el modelo de objetos de javascript ...

Por ejemplo tal y como lo tienes para que sirve el parametro especie ... sea perro o gato va a hacer "Miau..."...

Estos funcionan...

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2. function Animal(especie) {
  3.   //objeto Animal.
  4.   //propiedades
  5.   this.vidas=7;
  6.   this.sonido="Miau!!!!";
  7.   this.especie=especie;
  8.  
  9.   //metodos
  10.   this.maulla=Maulla;
  11.   this.muerde=Muerde;
  12.  
  13.   //eventos
  14.   this.onMuerde=new Function();
  15.   this.onMaulla=new Function();
  16.  
  17.   return this;
  18. }
  19.  
  20. function Maulla(aQuien) {
  21.   //Metodo del objeto Animal
  22.   if(this.vidas>0){
  23.       alert(this.sonido+" "+this.vidas);
  24.   aQuien.muerde(this);
  25. }else{
  26.    alert("Muerte");
  27.    delete this;
  28.   }
  29.   }
  30.  
  31. function Muerde(aQuien) {
  32.   aQuien.vidas-=1;
  33.   aQuien.maulla(this);
  34. }
  35.  
  36. var Roger=new Animal("Gato");
  37. var Michael=new Animal("Perro");
  38.  
  39. Michael.muerde(Roger);
  40.  
  41. </script>
Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2. function Animal(especie) {
  3.   //objeto Animal.
  4.   //propiedades
  5.   this.vidas=7;
  6.   this.sonido="Miau!!!!";
  7.   this.especie=especie;
  8.  
  9.   //metodos
  10.   this.maulla=Maulla;
  11.   this.muerde=Muerde;
  12.  
  13.   //eventos
  14.   this.onMuerde=new Function();
  15.   this.onMaulla=new Function();
  16.  
  17.   return this;
  18. }
  19.  
  20. function Maulla(aQuien) {
  21.   //Metodo del objeto Animal
  22.   if(this.vidas>0){
  23.       alert(this.sonido+" "+this.vidas);
  24.   aQuien.muerde(this);
  25. }else{
  26.    alert("Muerte");
  27.    delete this;
  28.   }
  29.   }
  30.  
  31. function Muerde(aQuien) {
  32.   aQuien.vidas-=1;
  33.   aQuien.maulla(this);
  34. }
  35.  
  36. var Roger=new Animal("Gato");
  37. var Michael=new Animal("Perro");
  38.  
  39. Roger.maulla(Michael);
  40.  
  41. </script>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 19/03/2013, 08:26
 
Fecha de Ingreso: marzo-2013
Mensajes: 3
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Eventos Propios de Objetos Propios

Gracias por la contribución.
Creo que tu solucion no asigna a las funciones anónimas metodo alguno.
¿donde esta el evento declarado, definido y asignado? Son las 3 cosas que busco para el ejemplo.
Respecto a que si un perro hace "miau" en fin .... la solución a este problema es reasignar a la instancia del perro el sonido por el que sea adecuado.

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2. function Animal(nombre) {
  3.   //objeto Animal.
  4.   //propiedades
  5.   this.vidas=7;
  6.   this.sonido="Miau!!!!";
  7.   this.nombre=nombre;
  8.  
  9.   //metodos
  10.   this.maulla=Maulla;
  11.   this.muerde=Muerde;
  12.  
  13.   //eventos
  14.   this.onMuerde=new Function();
  15.   this.onMaulla=new Function();
  16.  
  17.   return this;
  18. }
  19.  
  20. function Maulla {
  21.   //Metodo del objeto Animal
  22.   if(this.vidas>0){
  23.       alert(this.sonido+" "+this.vidas);
  24.       this.onMaulla();
  25. }else{
  26.    alert("Muerte");
  27.    delete this;
  28.   }
  29.   }
  30.  
  31. function Muerde(aQuien) {
  32.     if (aQuien.vidas>0){
  33.         aQuien.vidas-=1;
  34.         aQuien.maulla();
  35.     };
  36. }
  37.  
  38. //Instanciamos los Animales
  39. var Gato=new Animal("Roger");
  40. var Perro=new Animal("Michael");
  41. Perro.sonido = "Ladra"; // no afecta al ejercicio un perro no maulla :D
  42.  
  43. //Asigno al evento del Gato onMaulla a la accion El perro muerde al gato.
  44. Gato.onMaulla = Perro.muerde(Gato);
  45.  
  46. //Asigno al evento del Perro onMuerde a la accion del Gato ->maullar
  47. //Perro.onMuerde = GatoEsMordido();
  48.  
  49. Gato.maulla();
  50.  
  51. </script>

Última edición por Andurino; 19/03/2013 a las 17:19 Razón: Pues que ya estoy en un PC ?? ¿vale la Razón?

Etiquetas: eventos, funcion, js, objetos, propios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:53.