2011-05-15 24 views
1

我試圖編寫一個自定義的fadeTo(component, x, y):void方法,該方法將一個任意的Flex組件作爲參數並將其移動到一個給定的位置,但順利地進行。如何製作將任意Flex組件作爲參數的自定義方法?

我遇到的問題如下。

欲組件本身發送作爲參數,如下所示:(使用按鈕僅作爲示例)

fadeTo(myButton, 200, 500);

(這應該平滑地從它的當前位置移動myButton到位置指示爲參數)

然而,我真的不知道是什麼任意Flex組件我該如何處理?

我想要的是關於如何進行的一些建議。

謝謝

回答

4

使用UIComponent作爲參數類型:

public function fadeTo(component:UIComponent, x:int, y:int):void{ 
// do stuff 
} 

或可能IUIComponent

public function fadeTo(component:IUIComponent, x:int, y:int):void{ 
// do stuff 
} 

如果你想成爲真正通用的,你可以使用Object類型:

public function fadeTo(component:Object, x:int, y:int):void{ 
    if(component is IUIComponent){ 
    // do stuff 
    } 
} 
+1

'component == IUIComponent'不會計算爲true,因爲組件實例永遠不會等於接口本身。一般來說,將參數作爲對象傳遞並不是一個好主意,但是如果你這樣做了,把它在'try/catch'中進行轉換,或者進行'typeof'比較。 – ocodo 2011-05-15 23:34:34

+0

嗯..我會嘗試,並回來標記爲正確的答案。順便說一句,我想我以前遇到過這個flextras.com網站並下載了一些東西。 – 2011-05-15 23:34:35

+2

@Slomojo我應該使用「is」而不是'=='。我的錯字。我認爲做一個比較比用try/catch投射更加優雅。這就是爲什麼這個答案downvoted? – JeffryHouser 2011-05-16 00:13:53

相關問題