0

私はFlashの専門家ではありませんが、AS2で「長押し」ボタンを作成する方法を見つけました。現在、AS3を使用しており、このコードを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;
    };
};

ありがとう !

4

2 に答える 2

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秒間押し続ける必要があります。

于 2012-05-25T20:44:33.693 に答える
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);
    }
  }
}
于 2012-05-25T20:49:43.020 に答える