2010-03-03 52 views
1

如果我這樣做ActionScript 3事件轉發非法?

stuff.addEventListener(FooEvent.NAME, function(e:FooEvent) { 
    dispatchEvent(e); 
} 

我得到一個運行時錯誤說,事件不能轉換爲FooEvent。 然而,它工作正常,如果我做的:

stuff.addEventListener(FooEvent.NAME, function(e:FooEvent) { 
    dispatchEvent(new FooEvent(e.things)); 
} 

爲什麼?

回答

3

dispatchEvent調用clone對傳遞的事件,如果該事件已被「使用」(即已被調度)。從你說的話,我相當肯定你沒有重寫FooEventclone -method,因此它使用Event的實現,它返回一個普通的香草Event。這是你錯誤的根源。

您需要覆蓋FooEvent中的clone方法,以便返回FooEvent的適當實例。