javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字


Posted in Javascript onJanuary 23, 2013

前两讲我告诉了大家如何使人物移动,那么今天我们就来看看如何实现仿《三国志曹操传》人物情景对话。具体的链接我写在下方。

一、前言

相信大家都还记得吧,在某些新闻里会有一些惨不忍睹的结果是用像打字机一样的方式把文字弄出来。那么今天的主要目的就是要办到这个。

就在9月5日的时候,我在办公室里起了个做这种程序的念头,并且有了点思路。我首先想用调margin的方法,按理说是作出来了,但很不让人满意,毕竟很麻烦,并且技术也差。所以我打算用上数组和循环。9月13日我抽空写出来了,但由于这几天很忙,基本上在工作日不可能来照顾我的博客,因此没来得及分享给大家,现在是周末,所以就来给大家交流经验,希望我们共同进步。

二、代码讲解

首先还是来看段代码:

var contentout = []; 
var content = "ducle, ducle, ducle, ducle..."; 
contentout = content.substring(0, content.length); 
var sub = 0; var time = 0; 
function input(){ 
for(var i = 0; i < contentout.length; i++){ 
setTimeout("document.getElementById('ID_P_CONTENT').innerHTML+= contentout[sub], sub += 1", time); 
time += 100; 
} 
}

我就用了这点代码作出了意想不到的结果。哈哈,虽然形容有点夸张,但真的使我如愿以偿。话不多说,接下来看看解析。

这些代码完成的是打字,并且只用了数组和循环以及几个一般的变量。可见难度不算太大。

var contentout = []; 
var content = "ducle, ducle, ducle, ducle..."; 
contentout = content.substring(0, content.length); 
var sub = 0; var time = 0;

这里我进行了定义全局变量。首先是定义了数组,毕竟数组和循环是这个程序的核心。接着我定义了字符号串,并将内容设定为:“ducle, ducle, ducle, ducle...” 接下来就是要让字符一个一个跑到数组里了。因此我用到了函数substring(),这个函数就是专门把字符串切开成一个一个的字符的。

substring语法:stringObject.substring(start,stop)
另外也可以去w3cschool上看看:https://3water.com/w3school/js/jsref_substring.htm
当我们把字符串一个个切开后,我们就要把切开后的赋值给数组,这时数组就能正确地把每个字当作成员挨个放进下标。接下来我要做的任何人都能猜到了吧——那就是用循环把数组里的表示出来。

至于剩下的变量sub是用来以后输出数组元素的下标变量。time则是以后用循环打字的时间。具体分析下面会讲到。
再看代码:

function input(){ 
for(var i = 0; i < contentout.length; i++){ 
setTimeout("document.getElementById('ID_P_CONTENT').innerHTML+= contentout[sub], sub += 1", time); 
time += 100; 
} 
}

这里就是专门用循环挨个输出数组里的元素的核心部分。大家都知道javascript循环最烦人的——就是变量是先循环完。意思就是如果说:你把这里的变量i 每次循环时用alert打出来,那无论什么时候都是一个值,且都等于最大值。因此在上面我定义的sub变量就起了作用。

因为sub变量是等待后才做处理,所以不管循环多少次,它必须等到一定时间才+=1。那么就用它来做输出时的下标,是再也适当不过了。

setTimeout函数大家也明白:如果有两个setTimeout时间参数是一样的,那么就会在同一时间里执行这两个代码,即使你的代码不是写在同一行。因此我们给他每循环一次就加100,那么文字就会等待100毫秒后多出现一个。

另外还要注意一下,在这里给对象改内容要用+=,否则就会每次只显示一个字。

代码下载地址
三、演示效果

首先是:

javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字

然后是:

javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字

最后是:

javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字

演示地址:
四、后记

功夫不负有心人,我想游戏的设计并不难,只要用心,努力去做就能成功。以后如果有什么好的技术,我会立刻分享给大家。最近把以前讲过的技术整理了一下,做了个小demo,希望大家喜欢。demo的下载和试玩会在不久后公布,现在还在测试中。另外游戏开发和游戏引擎至关重要,我准备亲自开发自己的引擎,这样更容易设计游戏。
谢谢大家支持!

Javascript 相关文章推荐
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
Jan 15 Javascript
javascript+xml实现简单图片轮换(只支持IE)
Dec 23 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
js中浮点型运算BUG的解决方法说明
Jan 06 Javascript
ie 7/8不支持trim的属性的解决方案
May 23 Javascript
jQuery实现“扫码阅读”功能
Jan 21 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
vue2组件实现懒加载浅析
Mar 29 Javascript
underscore之Chaining_动力节点Java学院整理
Jul 10 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
Aug 04 Javascript
基于vue.js快速搭建图书管理平台
Oct 29 Javascript
微信小程序之onLaunch与onload异步问题详解
Mar 28 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
Jan 23 #Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
Jan 23 #Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
Jan 23 #Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
Jan 23 #Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
Jan 23 #Javascript
jquery简单瀑布流实现原理及ie8下测试代码
Jan 23 #Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
Jan 23 #Javascript
You might like
php中使用临时表查询数据的一个例子
2013/02/03 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
深入理解Python装饰器
2016/07/27 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
keras打印loss对权重的导数方式
2020/06/10 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
应届生高等护理求职信
2013/10/12 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
高中生评语大全
2014/04/25 职场文书
田径运动会广播稿
2015/08/19 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python