代码之家  ›  专栏  ›  技术社区  ›  Chunky Chunk

ActionScript-私有参数?

  •  0
  • Chunky Chunk  · 技术社区  · 14 年前

    是否可以将参数标记为私有的,仅对拥有该函数的类可访问/有用的?

    例子:

    //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
         }
    

    上面的bounce()方法签名不正确。为了方便事件侦听器,需要 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 回复  |  直到 14 年前
        1
  •  1
  •   John Giotta iaforek    14 年前

    如果你想打电话 bounce 没有所需的鼠标孔:

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

    仅供参考,bounce不需要公开。。。它也可以是一个私人功能。不幸的是,AS3不支持重载。