2009-04-25 18 views
5

Ho una classe essenzialmente:Flex Tipo coercizione, è andato mentale penso

public class WindowEvent extends Event 
{ 
    public static const WARNEVENT:String = "warnEvent"; 
    public static const TASKREQEVENT:String = "taskRequestEvent"; 
    public static const TASKANNOUNCE:String = "taskAnnounce"; 
    public static const WINDOWCHANGE:String = "windowChange"; 
    public static const ILLEGALPOSITION:String = "illegalPosition"; 

    // insert brevity 
} 

I primi quattro eventi sono stati lavorando bene, ma ho appena ho aggiunto ILLEGALPOSITION e provato questo:

// inside Window.as 
    private function checkDimensions():void { 
     if(!Window._legalBoundaryEnable) 
      return; 
... var pass:Boolean = Window.legalBoundary.containsRect(
455  this.getBounds(stage)); 
456 if(!pass) { 
457  this.dispatchEvent(new WindowEvent(WindowEvent.ILLEGALPOSITION, 
...   "Illegal Position etc.")); 
     } 
    } 

così Flex vomitato questo stack di me quando ho colpito il metodo di spedizione:

TypeError: Error #1034: Type Coercion failed: cannot convert ¬ 
     flex.utils.ui::[email protected] to flash.events.MouseEvent. 
    at flash.events::EventDispatcher/dispatchEventFunction() 
    at flash.events::EventDispatcher/dispatchEvent() 
    at mx.core::UIComponent/dispatchEvent() ¬ 
     [C:\autobuild\~\UIComponent.as:9298] 
    at flex.utils.ui::Window/checkDimensions()[C:\Users\~\Window.as:457] 
    at flex.utils.ui::Window/stageResized()[C:\Users\~\Window.as:220]

Come si può vedere dalla traccia, 012.è l'ultima riga di codice utente. Quindi WTF è flash.events.EventDispatcher.dispatchEventFunction che prova a fare con un MouseEvent?

risposta

5

Questo errore si verifica normalmente perché un listener che hai impostato ha un tipo di parametro evento errato. Sono abbastanza certo che questo deve essere il caso qui.

Controllare tutti gli ascoltatori è stata impostata per l'evento e assicurarsi che la funzione è

someFunction(event : WindowEvent) : void 
+0

Avevo duplicato una funzione listener e avevi ragione, il tipo di parametro era MouseEvent. Davvero uno stupido errore, non è vero? –

+0

/accetta non è possibile utilizzare tag nei commenti. –

3

Provare a utilizzare un altro valore per ILLEGALPOSITION, "illegalPosition" potrebbe essere utilizzato da Flex stesso (o da un'altra parte del codice) e correlato a un evento del mouse. Quindi, quando questo gestore di eventi si attiva, tenta di convertire il tuo evento in un MouseEvent perché pensa che dovrebbe essere uno.

+0

Sì, ho imparato che uno sulla vostra pelle ... Se ho avuto la reputazione che avevo + 1 tu. –