Comunidad de diseño web y desarrollo en internet online

Warning: 3590

Citar            
MensajeEscrito el 27 May 2013 09:17 am
Hola a todos, tengo el siguiente warning en la compilación de mi flash y querría saber cómo puedo quitarlo:

Código :

Warning: 3590: String used where a Boolean value was expected.  The expression will be type coerced to Boolean.

Dicho warning me lo produce el dispatchEvent de la siguiente función:

Código ActionScript :

private var msg:String = "";
public function myFunction(_msg:String):void
{
   msg = _msg;
   dispatchEvent(new Event("MyDispatchedFunction", msg));
}

¿Alguna idea de cómo solucionarlo?
Muchas gracias

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 May 2013 09:49 am
BuenAS:

Es que el segundo parámetro que se le pasa a un Evento al crearlo es si burbujea o no Event y es una propiedad booleana.

Creo que lo que quieres hacer es pasar información en el evento. Para ello deberías crear un evento personalizado. Algo así:

Código ActionScript :

package
{
   import flash.events.Event;
   
   public class MiEvento extends Event
   {
      public static const MANDAR_MENSAJE:String = "mandarMensaje";
      
      public var msg:String;
      
      public function MiEvento(type:String, msg:String="", bubbles:Boolean = false, cancelable:Boolean = false)
      {
         super(type, bubbles, cancelable);
         this.msg = msg;
      }
      
      override public function clone():Event
      {
         return new MiEvento(type, msg, bubbles, cancelable);
      }
      override public function toString():String
      {
         return formatToString("MiEvento", "msg", "type", "bubbles", "cancelable", "eventPhase");
      }
   }
}


Si en lugar de un evento Event genérico creas y distribuyes este MiEvento, sí puedes pasarle un texto como segundo parámetro, texto que se guardará en la propiedad msg.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 May 2013 10:11 am
Y cómo hago para llamarlo?

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 May 2013 10:51 am
Ante todo ten cuidado de que a lo que llamas "MyDispatchedFunction" yo lo estoy llamando MiEvento.MANDAR_MENSAJE.

Para distribuir el evento:

Código ActionScript :

dispatchEvent(new MiEvento(MiEvento.MANDAR_MENSAJE, msg));

y donde hayas añadido el listener, ahora debes escuchar el evento MiEvento:

Código ActionScript :

addEventListener(MiEvento.MANDAR_MENSAJE, onMensajeMandado);
function onMensajeMandado(event:MiEvento):void
{
     trace(event.msg);
}


Lo que estoy haciendo no tiene mucho secreto: Te creas una nueva clase que extienda a Event como la que puse antes. A esta clase le añades una propiedad pública, en este caso "msg" donde vas a pasar el texto. Y todo funciona igual salvo que antes trabajabas con un evento genérico Event, y ahora estás utilizando uno que lo amplia llamado MiEvento (en la función listener ahora te va a llegar un evento de tipo MiEvento).

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 May 2013 11:06 am
BuenAS:

Para una explicación más detallada echa un vistazo al pdf de ayuda de AS3, en el apartado "Creación de un evento de alarma personalizado" (página 148)

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

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