2009-04-25 20 views
5

Tôi có một lớp cơ bản:Flex Loại Cưỡng chế, nó đã biến mất tinh thần tôi nghĩ

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 
} 

Bốn sự kiện đầu tiên được làm việc tốt, nhưng tôi chỉ tôi thêm ILLEGALPOSITION và cố này:

// 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.")); 
     } 
    } 

Vì vậy, Flex đã tăng cường ngăn xếp này cho tôi khi tôi nhấn vào phương thức công văn:

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]

Như bạn có thể thấy từ dấu vết, Window.as:457 là dòng mã người dùng cuối cùng. Vì vậy, WTF là flash.events.EventDispatcher.dispatchEventFunction cố gắng để làm với một MouseEvent?

Trả lời

5

Lỗi đó thường xảy ra vì người nghe bạn đã thiết lập có loại tham số sự kiện không chính xác. Tôi khá chắc chắn rằng đây phải là trường hợp ở đây.

Kiểm tra tất cả các thính giả mà bạn đã thiết lập cho sự kiện đó và chắc chắn rằng các chức năng là

someFunction(event : WindowEvent) : void 
+0

Tôi đã sao chép một hàm listener và bạn đã đúng, kiểu tham số là MouseEvent. Thực sự là một sai lầm ngớ ngẩn, phải không. –

+0

/lấy nó, bạn không thể sử dụng thẻ trong ý kiến. –

3

Hãy thử sử dụng giá trị khác cho ILLEGALPOSITION, "illegalPosition" có thể được sử dụng bởi chính Flex (hoặc một phần khác của mã của bạn) và liên quan đến sự kiện chuột. Vì vậy, khi xử lý sự kiện đó kích hoạt, nó sẽ cố gắng chuyển đổi sự kiện của bạn thành một MouseEvent bởi vì nó cho rằng nó phải là một.

+0

Yeah, tôi biết được rằng một cách khó khăn ... Nếu tôi đã có uy tín tôi muốn + 1 bạn. –