2010-11-16 64 views
0

是否可以將參數標記爲私有,只對擁有該功能的類可訪問/有用?ActionScript - 私有參數?

例如:

//PRIVATE CLASS (.SWC) 
public function set AutoBounce(value:Boolean):void 
    { 
    if (value) 
     addEventListener(MouseEvent.CLICK, bounce); 
     else 
     removeEventListener(MouseEvent.CLICK, bounce); 
    } 

public function bounce():void //incorrect signature 
    { 
    //bounce ball 
    } 

上述彈跳()方法的簽名是不正確。爲了方便事件聽衆,它需要是public function bounce(evt:MouseEvent):void。但是,我不希望該類的用戶在調用bounce()函數時不得不提供此參數。因此,如果我可以將evt:MouseEvent參數標記爲private或隱藏於調用類中,它將解決此問題。

目前,我簡單地將事件監聽器轉發功能:

//PRIVATE CLASS (.SWC) 
public function set AutoBounce(value:Boolean):void 
    { 
    if (value) 
     addEventListener(MouseEvent.CLICK, forwardBounce); 
     else 
     removeEventListener(MouseEvent.CLICK, forwardBounce); 
    } 

private function forwardBounce(evt:MouseEvent):void 
    { 
    bounce(); 
    } 

public function bounce():void 
    { 
    //bounce ball 
    } 

而不是重定向,有沒有辦法處理這一問題沒有更好的辦法?也許「更好的方式」是一個糟糕的詞語選擇。有沒有一種方法可以在不使用轉發功能的情況下重構此代碼,或者強制用戶包含事件參數。

回答

1

你可以只說這個,如果你想能夠調用bounce沒有所需的MouseEvent:

public function bounce(evt:MouseEvent=null):void 
{ 
    //... 
} 

僅供參考,反彈並不需要公開......它也可以是一個私有函數。不幸的是,AS3不支持重載。

+0

這將工作重構。然而,這種方法允許用戶使用代碼提示(它不會做任何事情,看起來令人困惑)看到的MouseEvent提供該公共函數。 – TheDarkIn1978 2010-11-16 18:16:13

+0

反彈()是公開的。用戶可以調用它。他們還可以選擇性地切換autoBounce屬性,該屬性可以或不會自動爲它們調用bounce()。 – TheDarkIn1978 2010-11-16 18:18:05

+0

是的。我不得不說現在的方法是最好的。 – 2010-11-16 18:41:20

相關問題