Как зациклить анимацию/автопрокрутку TextField по экрану

Я работаю во Flash AS3, AIR 3.2 для iOS SDK. Я пытаюсь заставить TextField появляться и переходить с правой стороны экрана автоматически на левую сторону, исчезать, а затем снова появляться справа в цикле.

Пытаюсь понять, как я вообще начну кодировать это и логику, стоящую за этим. На данный момент у меня есть класс MarqueeTextField, который выполняет прокрутку. Но он только прокручивает/выделяет буквенный символ за символом, а не от точки к точке на экране. Так же "заикается" при прокрутке на медленных скоростях и не плавно.

public class MarqueeTextField extends TextField
{
    /** Timer that ticks every time the marquee should be updated */
    private var __marqueeTimer:Timer;

    /**
    *   Make the text field
    */
    public function MarqueeTextField()
    {
        __marqueeTimer = new Timer(0);
        __marqueeTimer.addEventListener(TimerEvent.TIMER, onMarqueeTick);
    }

    /**
    *   Callback for when the marquee timer has ticked
    *   @param ev TIMER event
    */
    private function onMarqueeTick(ev:TimerEvent): void
    {
        this.text = this.text.substr(1) + this.text.charAt(0);
    }

    /**
    *   Start marqueeing
    *   @param delay Number of milliseconds between wrapping the first
    *                character to the end or negative to stop marqueeing
    */
    public function marquee(delay:int): void
    {
        __marqueeTimer.stop();
        if (delay >= 0)
        {
            __marqueeTimer.delay = delay;
            __marqueeTimer.start();
        }
    }
}
}

Я искал, и, кажется, нет ни одного, который использует ТОЛЬКО AS3 (они используют графический интерфейс Flash). Кто-нибудь может объяснить мне, как мне начать кодировать это и сделать его плавным даже на медленных скоростях?


person ArrayOutOfBounds    schedule 01.02.2013    source источник


Ответы (1)


Если вам действительно нужно, вы всегда можете использовать движок GreenSock Tweening. Просто импортируйте пакет и просто используйте TweenLite.to(). Кроме того, похоже, что вы просто вставляете текст вместо фактического изменения положения текстового поля.

person David    schedule 01.02.2013
comment
Спасибо. Согласно документации ASDoc, мне придется использовать TweenMax, который расширяет TweenLite для функции повтора. - person ArrayOutOfBounds; 04.02.2013
comment
@ArrayOutOfBounds Хорошо. Обязательно закройте этот вопрос, когда закончите. - person David; 04.02.2013