2012-05-25 3 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 секунд, пока событие будет срабатывать.

Смежные вопросы