2012-05-25 87 views
0

我不是Flash專家,但我在AS2中發現了一種方法來製作「按住按鈕」按鈕。現在我正在使用AS3,我希望將此代碼轉換爲AS3。有人可以幫忙嗎?Flash AS3按住按鈕

stop(); 

function startTimer(mc, conversionTime) { 
    mc.onEnterFrame = function() { 
     if ((getTimer()/1000) - conversionTime > 1) { 
      delete this.onEnterFrame; 
      gotoAndStop(3); 
     } 
    }; 
} 
button1.onPress = function() { 
    var conversionTime:Number = getTimer()/1000; 
    startTimer(this, conversionTime); 
    this.onRelease = function() { 
     if (this.onEnterFrame != null) { 
      gotoAndStop(2); 
     } 
     delete this.onEnterFrame; 
    }; 
}; 

謝謝!

回答

0

更改mc.onEnterFrame = function() ...到:

mc.addEventListener(Event.ENTER_FRAME, onEvent); 

function onEvent(e:Event) 
{ 
    if ((getTimer()/1000) - conversionTime > 1) 
    { 
     this.removeEventListener(Event.ENTER_FRAME, onEvent); 
     gotoAndStop(3); 
    } 
} 

更改button1.onPress = function() ......到:

button1.addEventListener(MouseEvent.MOUSE_DOWN, onBtnDown); 

function onBtnDown(e:MouseEvent) 
{ 
    var conversionTime:Number = getTimer()/1000; 
    startTimer(this, conversionTime); 
    function onBtnUp(e:MouseEvent) 
    { 
    if (this.hasEventListener(Event.ENTER_FRAME)) 
    { 
     gotoAndStop(2); 
     this.removeEventListener(Event.ENTER_FRAME, onEvent); 
    } 
    } 
} 
+0

非常感謝,非常感謝!回答如此之快哇! – user1418141

3

在AS3它是這樣的:

mc.addEventListener(MouseEvent.MOUSE_DOWN, _mouseDown); 
var myTimer:Timer = new Timer(5000,1); 
myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, _buttonPressedEnoughLong); 

private function _mouseDown(e:MouseEvent):void 
{ 
    stage.addEventListener(MouseEvent.MOUSE_UP, _mouseUp); 
    myTimer.start(); 
} 

private function _mouseUp(e:MouseEvent):void 
{ 
    stage.removeEventListener(MouseEvent.MOUSE_UP, _mouseUp); 
    myTimer.reset(); 
} 

private function _buttonPressedEnoughLong(e:TimerEvent) : void { 
    e.currentTarget.reset(); 
    // Do stuff 
} 

您需要掛機鍵5秒,之前的事件將觸發。