1

トゥイーンで悩んでいます。私の使い方の説明は次のとおりです。

テキストボックスがムービークリップの子であるシステムがあります。[次へ] ボタンをクリックすると、ムービークリップが 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 によって開始され、テキストをナビゲートします

4

2 に答える 2

1

テキスト選択を無効にしてみてください。b_textB.selectable = false

選択の問題の可能性をすばやく排除できます。しかし、あなたの質問に時々あることは、それが問題であることを強く示しています。

テキストが表示されているときにテキストを選択できるようにする必要がある場合は、トゥイーンの最初と最後でオフにしてからオンにします。

これで解決することを願っています。

ところで、ここにTweenクラスに代わる完全に無料のいくつかのリストがあります... (Greensock の Tween パッケージは無料ではありません。)

アップデート...

これを解決してユーザーがテキストを選択できるようにする唯一の方法は、選択可能な複製を作成し、トゥイーンの開始時にこれをオフにし、終了時に再度オンにtextfield切り替えることです。影響を受けるプロパティは適切に機能します。visiblealphatextfield

かなり不器用ですが、効果が機能し、テキストが表示されているときにユーザーがテキストを選択できるようになります。

textfieldオリジナルを aSpriteでラップしalpha、代わりに Tween を実行することもできますが、それが 100% 修正されることを保証するものではありません。

于 2010-10-14T10:21:06.843 に答える
0

標準Tweenクラスは、多くの状況でちょっとばかげています。それを使用するときは、ガベージ コレクションが開始される可能性があるため、そのインスタンスを上書きまたは削除しないように注意する必要があります。同様に、アニメーションの動作を混乱させる可能性のある開始値を常に指定する必要があります。

問題が正確に何であるかは正確にはわかりません。コードが少ないため、再現するのは困難です (まだ問題が発生する場合は、完全に機能するサンプル コードを提供することをお勧めします)。ただし、別のトゥイーン フレームワークを試してみることをお勧めします。私自身、 Greensock の TweenLiteで非常に良い経験をしました。それは奇妙な構文を持っているかもしれません (少なくとも私はより良い構文を想像できました) が、一般的には非常にうまく機能し、代わりに TweenLite を使用するだけで標準の Tween クラスに関する非常に多くの問題を解決しました。

于 2010-10-14T09:41:32.377 に答える