2011-03-21 75 views
0

我正在構建一個自定義組件,並且需要將傳遞給該方法的事件轉換爲鼠標事件。我可以做到這一點,但它告訴我,我得到一個對象的空引用。這是我如何稱呼它。在Flex 4中進行轉換轉換時,您可以將「任何東西」轉換爲「任何東西?」

public function dragStart(e:MDIWindowEvent): void { 
    var mouse:MouseEvent = (e.currentTarget as MouseEvent); 
    trace(mouse.localX);//<-----Null Error 
} 

我怎樣才能通過將MDIWindowEvent轉換爲MouseEvent?如果我可以在那。

+0

做你的'MDIWindowEvent'延長'MouseEvent'? – www0z0k 2011-03-21 12:44:30

回答

3

您正在投射事件目標而不是事件不起作用。 此外,您不能將MDIWindowEvent強制轉換爲MouseEvent。

什麼你可以嘗試是:

public function dragStart(e:MDIWindowEvent): void { 
    trace(e.currentTarget.mouseX); 
} 

羅布

+0

如果該事件類擴展MouseEvent,他不應該能夠將MDIWindowEvent作爲MouseEvent進行投射嗎? Oherwise,+1 – JeffryHouser 2011-03-21 13:01:49

+0

這工作! :D謝謝! – Dennis 2011-03-21 13:01:50

+1

@ www.Flextras.com:只有當它擴展MouseEvent時,否則它將始終評估爲null。這是檢查參數類型的方法之一,即。你可以做'if(var1是SomeClass)','if(var1 as SomeClass)'或'if(SomeClass(var1))'。 – Maurycy 2011-03-21 13:04:12

1

如果MDIWindowEvent沒有擴展MouseEvent,這是行不通的。

1

as返回鑄造對象或null如果對象不能鑄造。如果它不是你想要投射的東西的子類,它就不能被鑄造。如果演員不按計劃行事,這種方式可以恢復。

相關問題