5

ユーザーが長押しできるようにするボタンをコーディングする方法の明確な例を探していました。これが発生している間に、いくつかのコードを実行したいと思います。

TouchEvent.Touch と touchPhase.Began を実装しましたが、一度しか起動しません。

これを実装する方法について明確な説明が見つかりません。どんな助けでも大歓迎です。

btnPress.addEventListener(TouchEvent.TOUCH, isPressed);

private function isPressed(event:TouchEvent){
    var touch:touch = event.getTouch(btnPress, TouchPhase.BEGAN);
    if(touch)
    {
        trace("pressed");
    }
}
4

1 に答える 1

10

ムクドリTouchEventTouchPhase最初は少し混乱する可能性があります。は、ユーザーが画面に触れ始めたときに1 回TouchPhase.BEGANだけ起動します。指がボタン上にある間に何らかのコードを実行したい場合は、フェーズで実行を開始し、フェーズで実行を停止します (ユーザーが画面に触れるのをやめたときにも 1 回だけ起動します)。TouchPhase.BEGANTouchPhase.ENDED

たとえば、あなたの場合、次のようなことができます:

btnPress.addEventListener(TouchEvent.TOUCH, isPressed);

private function isPressed(event:TouchEvent):void
{
    var touch:Touch = event.getTouch(btnPress);

    if(touch.phase == TouchPhase.BEGAN)//on finger down
    {
        trace("pressed just now");

        //do your stuff
        addEventListener(Event.ENTER_FRAME, onButtonHold);
    }

    if(touch.phase == TouchPhase.ENDED) //on finger up
    {
        trace("release");

        //stop doing stuff
        removeEventListener(Event.ENTER_FRAME, onButtonHold);
    }
}

private function onButtonHold(e:Event):void
{
    trace("doing stuff while button pressed!");
}

これが物事を少し明確にするのに役立つことを願っています!

于 2012-11-01T16:27:24.223 に答える