1

我在青少年方面遇到了一些麻烦。以下是我的用法说明:

我有一个系统,其中文本框是影片剪辑的子项。当您单击“下一步”按钮时,movieclip 淡出为 0-alpha,完成后,文本框中的文本将更改(到数组中的下一个索引)并补间回 100-alpha。这在文本中进行了很好的过渡。

我的问题是,有时它不会重新插入,只会退出,给用户留下一个文本应该是空框。

但是,我之前曾问过这个问题,并认为它是“超时”。现在,经过大量测试后,我意识到只有在单击或选择文本框中的某些文本时才会发生这种情况。它是否与此文本选择与下面的 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可选择的副本,并visible在补间开始时关闭此设置,然后在结束时再次alpha打开,受影响的属性textfield将正常工作。

我知道这很笨拙,但它会产生效果,并允许用户在可见时选择文本。

您也可以尝试将原件包装textfield在 a 中Sprite并对其进行alphaTween 处理,但我不保证这将是 100% 的修复。

于 2010-10-14T10:21:06.843 回答
0

在许多情况下,标准Tween类有点愚蠢。使用它时,您必须小心不要覆盖或删除它的实例,因为垃圾收集可能会在那时开始。以同样的方式,它总是要求您指定一个开始值,这可能会导致动画中的行为中断。

我不确定您的问题到底是什么,并且使用较少的代码很难重现它(如果您仍然遇到问题,您可能需要提供完整的工作示例代码)。但是,我建议您尝试不同的补间框架。我自己对Greensock 的 TweenLite有很好的体验。它可能有一个奇怪的语法(至少我可以想象一个更好的语法),但总的来说它工作得很好,而且我通过简单地使用 TweenLite 解决了标准 Tween 类的很多问题。

于 2010-10-14T09:41:32.377 回答