首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在出现周期时延迟文本外观动画

在出现周期时延迟文本外观动画
EN

Stack Overflow用户
提问于 2013-08-29 17:30:44
回答 2查看 349关注 0票数 0

Flash/AS3 noobie在这里。

我正试着逐字显示文字(效果很好)。但是,我希望动画在每次遇到句点/句号时延迟到500毫秒。到目前为止,我代码的相关部分如下所示:

代码语言:javascript
复制
public function displayLoop(e:Event):void
    {
        if (pos == textToDisplay.length - 1)
        {
            stop();
            return;
        }

        firstParagraph.appendText(textToDisplay.charAt(pos));
        if (textToDisplay.charAt(pos) == String.fromCharCode(46))
        {
            //here's where I want to delay??
        }
        pos++;
    }

在本例中,firstParagraph是我的动态文本对象的名称,textToDisplay是将逐个字母显示的文本字符串,pos只是显示文本的位置,因此我们可以跟踪它。

我猜这个问题有一个简单的解决方案,也许使用计时器EventHandler?

我感谢任何人提供的任何帮助,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-29 19:53:00

我认为以下内容将有助于编写您想要的代码:

String.split() --这种方法将帮助您将段落分割成句子,并将它们存储在数组中。(请记住,并不是所有的句点都是句号,所以您可能需要使用一些正则表达式来处理特殊情况,比如将它们用作省略号或小数):

例如:

代码语言:javascript
复制
textToDisplay.split('.');

US/FlashPlatform/reference/actionscript/3/String.html#split()

Array.shift() -这个方法将返回数组中的第一个元素,然后从数组中删除它。如果将句子存储在数组中,则可以继续调用shift()以获得需要显示的下一个句子:

例如:

代码语言:javascript
复制
var sentences:Array = textToDisplay('.');
var next_sentence:String = sentences.shift();

US/FlashPlatform/reference/actionscript/3/Array.html#shift()

Timer --正如您刚才提到的,这个对象将帮助您在句子后面创建这些延迟间隔:

例如:

代码语言:javascript
复制
var myTimer:Timer = new Timer(1000, sentences.length);
myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
myTimer.start();

function timerHandler(e:Event) {
    firstParagraph.appendText(sentences.shift());
}

US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html

票数 1
EN

Stack Overflow用户

发布于 2013-08-30 14:11:11

不需要跟踪位置,因为计时器中有一个计数器。

代码语言:javascript
复制
import flash.text.TextField;
import flash.utils.Timer;
import flash.events.TimerEvent;

var textToDisplay:String = 'AB.CDE.FGHI.JKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
var tf:TextField = new TextField()
tf.width = 500
tf.wordWrap = true
tf.height = 400
addChild(tf)
var timer:Timer = new Timer(100)
timer.addEventListener(TimerEvent.TIMER, onTimer)
timer.start()
function onTimer(e:TimerEvent):void{
    timer.delay = 100
    tf.appendText(textToDisplay.slice(timer.currentCount-1,timer.currentCount))
    if(timer.currentCount == textToDisplay.length){
        timer.stop()
    }
    if(textToDisplay.slice(timer.currentCount-1,timer.currentCount) == '.'){
        timer.delay = 500
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18517420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档