hugoruscitti / pilasweb

Versión de pilas-engine para navegadores usando HTML5.
www.pilas-editor.com.ar
17 stars 10 forks source link

getClassName rompe si yo uglifico #151

Open asanzo opened 6 years ago

asanzo commented 6 years ago

Con mi código sin minimizar/uglificar, ésto:

var a = new Actor();
a.etiquetas[0]

Retorna:

"Actor"

Pero si uglifico, retorna:

"t(t,o,n,i){void 0===i&&(i={}),e.call(this),this.evto_se_movio=new Evento('se_movio'),this.imagen=t||'sin_imagen.png',i=i||{},this.vivo=!0,this.radio_de_colision=a(this.ancho,this.alto)/2,this.id=pilas.utils.obtener_uuid(),this.x=o||0,this.y=n||0,this.espejado=!1,this.centro=['centro','centro'],this.etiquetas=[],this.etiquetas.push(this.getClassName()),i.rotacion&&(this.rotacion=i.rotacion),i.centro_x&&(this.centro_x=i.centro_x),i.centro_x&&(this.centro_y=i.centro_y),this.z=i.z?i.z:0,pilas.escena_actual().agregar_actor(this),pilas.escena_actual().click_de_mouse.conectar(this),pilas.escena_actual().mueve_mouse.conectar(this),this.callbacks_cuando_hace_click=[],this.callbacks_cuando_mueve_mouse=[],this.iniciar"

Y esto es porque el getClassName del Estudiante está hecho con un regex sobre el toString del constructor:

https://github.com/hugoruscitti/pilasweb/blob/9e68bab00fd5bc52e47b7666b09d9d86ea503645/src/actores/estudiante.ts#L82

Esto es un error feo, creo que la forma de solucionarlo es sólo etiquetar a los actores que se desea clasificar ú obtener a partir de obtener_actores_con_etiqueta, y etiquetarlos a conciencia (no automáticamente).

Yo sacaría getClassName junto con todos sus usos, incluída esta línea:

https://github.com/hugoruscitti/pilasweb/blob/9e68bab00fd5bc52e47b7666b09d9d86ea503645/src/actores/actor.ts#L77