美文网首页
如何使用js操纵文字,使其逐字显示出来

如何使用js操纵文字,使其逐字显示出来

作者: stois | 来源:发表于2016-01-11 17:15 被阅读1634次

需求:
公司推广用的游戏需要走养成类剧情,人物对话上也要按照养成类游戏通常的设置,1. 对话逐字显示直至完整;2. 点击对话中文字之后停止逐字显示,将剩余文字一次性补全。因此做了一个简单的调研。

控制文字显示的大致想法,首先是逐字setTimeout。但setTimeout的坏处,一是this指向document,二是无法用jquery链式调用。
因此首先寻找到了一个jquery.wait的插件,解决了链式调用的问题。

如何使用链式调用呢? 因为字符数可变,我先尝试写了一个for循环,往容器里逐字添加内容。需求1成功解决,但需求2则无法控制(尝试过各种方法)。我没有对插件的代码进行分析,于是换了一种递归式写法:

        var clicked = false ;
        var locate = 0 ;        
        var text = '李易峰,中国内地男演员、歌手、制片人。1987年5月4日出生于四川成都。2010年毕业于四川师范大学电影电视学院。2007年参加《加油好男儿》出道,同年12月发行首张EP《四叶草》。2009年发行首张个人专辑《小先生》。2010年主演电视剧《幸福一定强》和《幸福最晴天》,获2011年国剧盛典最佳新演员奖。2012年在《真爱谎言》中挑战扮演自闭症患者。2013年凭借电视剧《千金归来》获得乐视盛典最受欢迎男演员奖。2014年7月因电视剧《古剑奇谭》中“百里屠苏”一角而获得广泛关注;同年出演 ..';
        
        var obj = text.split("");
        console.log(obj.length);
        var output = $('#output');
        
        output.on('click', function(){
            clicked = true ;
            console.log('click');
        })
        output.on("myOwnEvent", function(event, locate){
            console.log(locate);
            if( clicked == true ){
                console.log('stop');
                $(this).text(text); 
            }
            else{
                if( locate < obj.length-1 ){ 
                   locate++;
                   $(this).append(obj[locate]).wait(100).trigger('myOwnEvent',locate);
                }
            }
        });
        output.on('startAdd', function(event){
            
                   $(this).append(obj[locate]).wait(100).trigger('myOwnEvent',locate);  
        })
        output.trigger('startAdd');

上面的代码使用了自定义的event,在每添加一个字之后做一次处理,如果遇到clicked则停止逐字,一次性显示;否则添加下一个字。

因为是测试代码,所以没有进行封装,这一套机制封装起来也应十分方便。

相关文章

  • 如何使用js操纵文字,使其逐字显示出来

    需求:公司推广用的游戏需要走养成类剧情,人物对话上也要按照养成类游戏通常的设置,1. 对话逐字显示直至完整;2. ...

  • js学习

    在页面写入文字 如何插入js代码 引入js文件 使用函数 function rec(){var mymessage...

  • ng事件指令

    概述 Angular JS对各种事件进行了对应指令的封装,使其能够更好的配合Angular JS使用。具有ng指令...

  • 前端面试-vue汇总

    一、MVVM 1.背景:用js操纵html 1.1. 直接用js操纵dom节点,原生API var dom = d...

  • 1.vue造轮子-button

    icon如何使用 使用icon 推荐网站 插槽的用处 如上所示,父组件中插入文字我爱JS,然后子组件必须要有slo...

  • 如何用色块制作出精美的PPT目录页?

    如何让朴素的PPT目录页充满设计感,使其和封面一脉相承?其实,使用几个色块就够了。 一、单色块法 只有纯文字的目录...

  • vue中引入VConsole

    首先引入VConsole的js文件,然后在main.js中 就可以显示出来了

  • 0.

    人能操纵文字,亦能被文字操纵。我要记录下各种无辜的词句编织的谎言,用以自省。

  • 如何 使用 树木 刷 涂料 , 以 在 人类 头发 Photos

    在 本 教程 中 , 您 将 学习 如何 使用 树木 刷 涂料 , 在 Photoshop 通过 操纵 人类 的 ...

  • vue-fullpage-ssr

    原理: 使用vue指令的方式,将fullpage.js进行封装;使其可以与vue或者nuxt项目更优雅的结合。 I...

网友评论

      本文标题:如何使用js操纵文字,使其逐字显示出来

      本文链接:https://www.haomeiwen.com/subject/qrnqkttx.html