2010-07-18 70 views
0

所以今天我的问题是,我们怎么能有1个功能同时装备有定时器事件和鼠标事件触发?试图避免重写/重命名函数,因为我也有一个Mouse事件触发它,而不仅仅是一个Timer事件。如何在AS3中为Timer事件和Mouse事件使用相同的函数?

问题:

我有一个前页泡沫淡入与上一个按钮侧翻,在前页泡沫计时器后会淡出结束图标,但我也有那个泡沫,其需要使用一个关闭按钮与计时器使用的功能相同。 (要避免写2个完全一样的功能)

我希望这有一个简单的办法解决这个像事件:空或东西。

Timer事件:

private function overShareButton(event:MouseEvent):void 
    { 
     shareIconsTimer = new Timer(3000,1); 
     shareIconsTimer.addEventListener(TimerEvent.TIMER, fadeOutShareIcons); 
     shareIconsTimer.start(); 

     fadeInShareIcons(); 
    } 

关闭按钮事件:

shareIcons.btn_closeIcons.addEventListener(MouseEvent.MOUSE_UP, fadeOutShareIcons); 

的前页泡泡淡出功能:

// Fade out the addThis Icons 
    private function fadeOutShareIcons(e:TimerEvent):void 
    { 
     shareIcons.buttonMode = false; 

     shareIcons.btn_closeIcons.buttonMode = false; 
     shareIcons.btn_email.buttonMode  = false; 
     shareIcons.btn_facebook.buttonMode = false; 
     shareIcons.btn_myspace.buttonMode  = false; 
     shareIcons.btn_digg.buttonMode  = false; 
     shareIcons.btn_delicious.buttonMode = false; 
     shareIcons.btn_favorites.buttonMode = false; 
     shareIcons.btn_twitter.buttonMode  = false; 
     shareIcons.btn_google.buttonMode  = false; 
     shareIcons.btn_messenger.buttonMode = false; 
     shareIcons.btn_stumbleupon.buttonMode = false; 

     // STOP TIMER & Remove share icon button events... 
     shareIconsTimer.stop(); 
     shareIconsTimer.removeEventListener(TimerEvent.TIMER, fadeOutShareIcons); 
     shareIcons.btn_email.removeEventListener  (MouseEvent.MOUSE_UP, addThisToEmail); 
     shareIcons.btn_facebook.removeEventListener (MouseEvent.MOUSE_UP, addThisToFacebook); 
     shareIcons.btn_myspace.removeEventListener  (MouseEvent.MOUSE_UP, addThisToMyspace); 
     shareIcons.btn_digg.removeEventListener  (MouseEvent.MOUSE_UP, addThisToDigg); 
     shareIcons.btn_delicious.removeEventListener (MouseEvent.MOUSE_UP, addThisToDelicious); 
     shareIcons.btn_favorites.removeEventListener (MouseEvent.MOUSE_UP, addThisToFavorites); 
     shareIcons.btn_twitter.removeEventListener  (MouseEvent.MOUSE_UP, addThisToTwitter); 
     shareIcons.btn_google.removeEventListener  (MouseEvent.MOUSE_UP, addThisToGoogle); 
     shareIcons.btn_messenger.removeEventListener (MouseEvent.MOUSE_UP, addThisToLive); 
     shareIcons.btn_stumbleupon.removeEventListener (MouseEvent.MOUSE_UP, addThisToStumbleupon); 

     TweenLite.to(shareIcons, .2, {alpha:0}); 
    } 

我唯一的选择,现在是创建另一个函数来处理关闭按钮MouseEvent,任何提示/想法赞赏! :d

回答

5

这里你的问题是你输入你的fadeOutShareIcons参数到TimerEvent,所以它只能接受TimerEvent

由于MouseEventTimerEventEvent下降,您可以使用它,因此两者都可以一起工作。如果你还想调用没有参数的同一个函数,你可以传递一个默认值为null。

  • 情况1

    private function fadeOutShareIcons(e:Event):void 
    
  • 情况下2使用默认参数,所以你可以调用fadeOutShareIcons()

    private function fadeOutShareIcons(e:Event=null):void 
    
  • 您也可以从你来检查事件的类型,其中事件检查:

    private function fadeOutShareIcons(e:Event=null):void { 
        if (e==null) { 
        // call directly 
        } else if (e.type==MouseEvent.MOUSE_UP) { 
         // came from mouse event 
        } else if (e.type==TimerEvent.TIMER) { 
         // came from timer event 
        } 
        //... 
    } 
    
+0

啊活泉有我们去:d谢谢!此外,如果声明真的帮助很多... – 2010-07-18 17:20:28

1

会投入,做一个单独的函数工作的代码,这是由两个事件处理程序叫工作?无论如何,你的主要工作函数似乎没有使用事件参数,所以如果这个工作是在另一个函数中完成的话,应该没有关系。

相关问题