Щелчок по текстовому элементу в анимации анимации остановки - PullRequest
1 голос
/ 01 октября 2010

У меня были проблемы с подростками. Вот описание моего использования:

У меня есть система, в которой текстовое поле является дочерним элементом мувиклипа. Когда вы нажимаете кнопку «Далее», мувиклип исчезает до 0-альфа, и после завершения текст в текстовом поле изменяется (на следующий индекс в массиве), и он снова превращается в 100-альфа. Это делает хороший переход по тексту.

Моя проблема в том, что иногда он не возвращается, а только выходит, оставляя пользователя с пустым полем, где должен быть текст.

Однако я уже задавал этот вопрос раньше, думая, что это «время ожидания». Теперь, после значительного тестирования, я понял, что это происходит только в том случае, если я щелкну или выделю часть текста в текстовом поле. Может ли это быть как-то связано с этим выделением текста, связанным с функцией changeText ниже ... (это то же самое текстовое поле, только текст меняется).

Кто-нибудь еще испытывал подобные неисправности?

КОД:

function changeClick(e:MouseEvent):void {
    if (e.currentTarget==btnRight) {
        newDirect="right";
    } else {
        newDirect="left";
    }
    if (newDirect=="right") {
        if (pageTotal!=pageCurrent) {
            tweenText=new Tween(b_textB,"alpha",Strong.easeOut,1,0,.5,true);
            tweenText.addEventListener(TweenEvent.MOTION_FINISH, changeText);
        }
    } else {
        if (pageCurrent!=1) {
            tweenText=new Tween(b_textB,"alpha",Strong.easeOut,1,0,.5,true);
            tweenText.addEventListener(TweenEvent.MOTION_FINISH, changeText);
        }
    }
}

function changeText(e:TweenEvent):void {
    var newText:String;
    var pageCurrentConstant:int=pageCurrent;
    if (newDirect=="right") {
        for (var i=0; i<=(pageTotal-1); i++) {
            if ((pageCurrentConstant-1)==i) {
                if (i!=pageTotal-1) {
                    newText=pageText[i+1];
                    pageCurrent++;
                } else {
                    newText=pageText[i];
                }
            }
        }
    } else {
        for (var j=0; j<=pageTotal; j++) {
            if (pageCurrentConstant==j) {
                if (j!=0) {
                    newText=pageText[j-2];
                    pageCurrent--;
                } else {
                    newText=pageText[j];
                }
            }
        }
    }
    b_textB.htmlText=newText;
    tweenText=new Tween(b_textB,"alpha",Strong.easeOut,0,1,.5,true);
    drawWidget();
}

changeClick инициируется либо btnRight, либо btnLeft для навигации по тексту

Ответы [ 2 ]

1 голос
/ 14 октября 2010

Попробуйте отключить выделение текста с помощью b_textB.selectable = false

Вы сможете быстро исключить возможность выбора вопроса. Но иногда в вашем вопросе ясно указывает на то, в чем проблема.

Если вам нужен текст, который можно выделить, когда он виден, просто выключите его и включите в начале и в конце анимации.

Надеюсь, это решит это.

Кстати, вот список нескольких совершенно бесплатных альтернатив классу Tween ... (Пакеты Greensock Tween не бесплатны).

Обновление ...

Единственный способ решить эту проблему и позволить пользователю выбрать текст, это создать дубликат textfield, который можно выбрать, и отключить visible для этого, когда начинается анимация, и снова включать, когда она заканчивается, alpha свойство на результат textfield будет работать правильно.

Довольно круто, я знаю, но это заставит эффект работать и позволит пользователю выбирать текст, когда он виден.

Вы также можете попробовать обернуть оригинальную textfield в Sprite и вместо этого выполнить alpha Tween, однако я не гарантирую, что это будет 100% исправлением.

0 голосов
/ 14 октября 2010

Стандартный класс Tween во многих ситуациях выглядит глупо. При его использовании вы должны быть осторожны, чтобы не перезаписать и не удалить его экземпляр, так как тогда может начаться сборка мусора. Точно так же всегда требуется указать начальное значение, которое может привести к нарушению поведения в анимации.

Я не совсем уверен, в чем именно заключается ваша проблема, и с таким меньшим количеством кода его трудно воспроизвести (вы можете предоставить полный рабочий пример кода, если проблема все еще возникает). Однако я предлагаю вам попробовать другую структуру анимации. Я для себя сделал очень хороший опыт с Greensock's TweenLite . У него может быть странный синтаксис (по крайней мере, я мог бы представить себе лучший), но в целом он работает очень хорошо, и я решил очень много проблем со стандартным классом Tween, просто взамен использовав TweenLite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...