Comunidad de diseño web y desarrollo en internet online

error 2007 con eventos custom

Citar            
MensajeEscrito el 13 Mar 2009 08:39 am
Buenas

Tengo esta clase definiendo dos eventos custom: EvMovil.OVER_MOVIL y EvMovil.DOWN_MOVIL:



Código :


package clases.ev{

    import flash.events.*

    public class EvMovil extends Event{

       public static const OVER_MOVIL="OVER_MOVIL"
       public static const DOWN_MOVIL="DOWN_MOVIL"
       public var param

       public function EvMovil(type,s=null){
             super(type,true)
             param=s
          }

       public override function clone():Event{
          return new EvMovil(type,param)
          }

      }// fin class

   }/// fin package





Cuando importo esta clase y añado esta línea

Código :

m.addEvenListener(EvMovil.OVER_MOVIL,onOver,false,0,true)


todo va ok, pero si hago esto


Código :

m.addEvenListener(EvMovil.OVER_MOVIL,onOver,false,0,true)
m.addEvenListener(EvMovil.DOWN_MOVIL,onDown,false,0,true)



me da Error #2007: Parameter text must be non-null

Alguien me puede dar alguna pista sobre lo que falla?


Gracias

Por verytorpe

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Mar 2009 10:22 am
El error viene en otro lado, seguramente en la función onDown, busca una línea donde estes recibiendo el parámetro text y estes haciendo algo con el

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Mar 2009 11:45 am
Ya está buscado. La función que recibe los eventos es algo así como

Código :

function onOver(e:EvMovil){

     // lo que sea
      }


es decir, no pasa parámetros, no pasa ninguna variable que atienda por "text", no sé si alguna variante (estoy escribiendo de memoria) pasa algún boolean, pero sea como sea usar "text" como nombre de variable... pues no. Da la impresión de fallar porque le sale del culo, al más puro estilo flash

Gracias por la sugerencia

Alguna otra idea?

Por verytorpe

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Mar 2009 11:49 am
"Flash tiene la culpa" .... eso me suena
Pues a menos que el error te especifique una línea en concreto, sigue el hilo de lo que agregaste, algo que no existe (error 1009 y derivados) es lo mas difícil de encontrar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Mar 2009 04:42 pm
Entiendo que quieres hacer algo parecido a lo explicado en Parsing Arguments with Events.
Pero el código y la filosofía es completamente distinta (así que bien puede ser que no quieras hacer lo que yo entiendo que quieres hacer)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Mar 2009 05:34 pm
varias cosas:
una:
por hacer las cosas de cabeza, acabo de darme cuenta de que el mensaje de error es este:
Error #2007: Parameter type must be non-null >:( pero qué idiota!

otra:
Sí que lo que quiero hacer es como lo del link de passing arguments; es más, ya lo he hecho, lo hago constantemente ( a mi manera, es decir, como lo que he pegado) y siempre ha funcionado ok, definiendo clases con veintitantos eventos custom. He añadido el "override function toString", por probar, pero nasti

El error no apunta a ninguna línea en concreto, pero comentas el segundo addEventListener y todo va como una seda

Lo de "flash tiene la culpa" lo digo y lo mantengo. El día que los textfields funcionen en condiciones....

(y gracias troncos!)

Por verytorpe

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Mar 2009 05:39 pm
Lo de "flash tiene la culpa" lo digo y lo mantengo


Me imagino, es toda una filosofía ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Mar 2009 05:48 pm
lo olvidaba... si separo cada evento en una clase propia (por ejemplo, evMovilOver y evMovilDown) funciona perfect, lo que pasa es que... coño, por qué? la misma aplicación tiene otro archivo con una docena de eventos custom y sin problema, no quiero estar creando una clase por cada evento, el código se volvería una locura

Por verytorpe

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Mar 2009 03:33 pm
Acabo de descubrir que, aunque down_movil está definido como public, no lo reconoce, de manera que para que funcione el listener hay que recurrir a addEventListener("DOWN_MOVIL",onDown) en lugar de addEventListener(EvMovil.DOWN_MOVIL,onDown). Así sí funciona, pero habrá que ver qué petadas colaterales conlleva.

Como iba diciendo, flash==mierda

Por verytorpe

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Mar 2009 03:53 pm
Amigo verytorpe, considera dejar el Flash, no vale la pena dedicarse a algo que consideras una mierda. Busca ser el mejor en cualquier lenguaje que consideres bueno, sino solamente darás lástima (trabajando en algo que es ... una mierda ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Mar 2009 04:02 pm
De acuerdo con solisarg, que maleado(como decimos en Perú) para decir eso de flash. Cuando lo común es un error al programar..

Por emedinaa

196 de clabLevel

2 tutoriales

Genero:Masculino  

Lima Perú

firefox
Citar            
MensajeEscrito el 18 Mar 2009 07:56 pm
ggg... vosotros sí que dais buenas soluciones para pagar las facturas!

Yo si creo un producto que se cuelga con sólo mirarlo, está lleno de bugs, y, coño, funciona mal -ver macromedia/adobe flash-, no lo cobro. Cuánto vale el flash? Habéis pagado por él? Pues yo sí, y con cada jugarreta de estas pienso en cada euro que he tenido que soltar por él.

Por verytorpe

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Mar 2009 08:26 pm
Yo pago mis facturas con Flash desde hace 11 años (era Flash 4 si no me equivoco, como pasa el tiempo)
Lo dicho, comprate otra cosa ... pero si vuelve a ser una mierda, desconfía ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Mar 2009 09:09 pm
A ver, a ver, para batallas del abuelo cebolleta y debates insustanciales sugiero abramos otro hilo.

Si alguien me puede explicar por qué no puedo acceder a una variable public de una clase que hace extend de Event a través de addEventListener, me desasnará un poco y demostrará que soy un zote.

Para todo lo demás... pues... mastercard

Por verytorpe

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Mar 2009 08:24 am

verytorpe escribió:

Acabo de descubrir que, aunque down_movil está definido como public, no lo reconoce, de manera que para que funcione el listener hay que recurrir a addEventListener("DOWN_MOVIL",onDown) en lugar de addEventListener(EvMovil.DOWN_MOVIL,onDown).

Ya sé que es una estupidez, pero puesto que has definido tu customerError en el package "clases.ev"
¿has puesto el import?

Código ActionScript :

import clases.ev.EvMovil

Y ¿has añadido el "path" de las clases que usas al proyecto?
(perdona si te parece estúpida la pregunta, pero no entiendo porqué no lo reconoce)

Volviendo a tu clase EvMovil, tampoco veo demasiado claro qué es lo que hace, supongo que quieres hacer algo como

Código ActionScript :

package clases.ev{

    import flash.events.*
    public class EvMovil extends Event{
       public static const OVER_MOVIL="OVER_MOVIL"
       public static const DOWN_MOVIL="DOWN_MOVIL"
       public var param
       public function EvMovil(type,s=null){
             switch (type){
                   case OVER_MOVIL:
                        super(MouseEvent.MOUSE_OVER,true)
                        break
                   case DOWN_MOVIL:
                        super(MouseEvent.MOUSE_DOWN,true)
                        break
              }
              param=s
          }
          ......
   }

Pero reconozco que ando un poco perdido en todo esto de los errores customizables -Me he limitado siempre a dispachar un error simplemente-

NOTA:Lo de que flash==mierda tienes razón que sería mejor otro hilo. Personalmente me parece que es una descalificación no demasiado fundada, pero es que en mi experiencia no he encontrado esos bugs, ni se me ha colgado con mirarlo -es cierto que algún amigo me ha comentado que no se lleva muy bien con Vista, aunque personalmente no he tenido ningún problema en ese sentido-

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Mar 2009 08:54 pm
Hola a todos
Me he registrado sólo para hacer un añadido a este post porque me estaba pasando poco más o menos lo mismo, y lo he resuelto con ese truco de pasar las cadenas. Chapuza, pero funciona

PERO:
Da errores de conversión forzada.Quité del clone el :Event y añadí una clase dummy desde la que hacer los dispatchEvent,
(copio tu código)

Código :

package clases.ev{

    import flash.events.*

    public class Ecustom extends Event{

     public var param

       public function Ecustom(type,s=null){
             super(type,true)
             param=s
          }

       public override function clone(){
          return new Ecustom(type,param)
          }

      }// fin class

   }/// fin package

lugo haz así los dispatch:

Código :

dispatchEvent(new Ecustom("OVER_MOVIL",param))


Así evita errores de conversión forzada, o al menos en mi caso, que tiro de tutoriales para los eventos custom

Y venga tronco, que el flash no es tan malo. Si no, yo no me lo habría bajado del emule :D


Yo pago mis facturas con Flash desde hace 11 años (era Flash 4 si no me equivoco, como pasa el tiempo)


Vaya, arréglate el condensador de fluzo, Casper ;)

Por pudi

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Mar 2009 01:09 pm
Gracias colegas!
Probé lo del switch sin mucho éxito (sí, el path era correcto... ójala hubiera sido ese el fallo!). Lo de la clase dummy no sé si termino de entenderlo, pero como ya tengo los eventos repartidos en distintas clases, me ha bastado con hacer los dispatch con cadenas en vez de con propiedades, porque, efectivamente, por aquí y por allí salían errores 1034. No entiendo ni papa, pero funciona.

Ok, hay entonces un parche. Pero el error sigue ahí. Al loro a los resultados de hacer un trace tras haber importado EvMovil:

Código :

--> trace(EvMovil.OVER_MOVIL): EvMovil.OVER_MOVIL
--> trace(EvMovil.DOWN_MOVIL): undefined


fff... gran programa!

Por verytorpe

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Mar 2009 08:38 pm
Podrías probar a hacer un trace del describeType de tu clase para ver si se muestran las propiedades que deberían aparecer. Luego.. si pones más propiedades te las lee? has probado a cambiar el orden en el que están declaradas? si le cambias el nombre, mejora?

Son tonterías, pero viendo el panorama, quién sabe. No veo el motivo por el que uno lo lea y el otro no, por lo que yo trataría de entender ésto antes que nada y ver bajo qué circunstancias funciona.

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 24 Mar 2009 07:33 pm
Ya he probado de todo, de lo sutil a lo descabellado, y nasti de plasti.
Switches, var en vez de const, cambiarlo de nombre, de orden... de todo, y con el describetype la única constante que aparece es "OVER_MOVIL"

Si alguien sabe de algún otro método para definir eventos custom sin andar parcheando molaría


Thanx!

Por verytorpe

13 de clabLevel



 

firefox

 

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