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 相关文章推荐
IE8 兼容性问题(属性名区分大小写)
Jun 04 Javascript
jQuery实现表头固定效果的实例代码
May 24 Javascript
js图片延迟加载的实现方法及思路
Jul 22 Javascript
JS常用正则表达式总结
Nov 12 Javascript
js获取电脑分辨率的思路及操作
Nov 22 Javascript
JS实现下拉菜单赋值到文本框的方法
Aug 18 Javascript
Javascript 函数的四种调用模式
Nov 05 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
Nov 10 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
Feb 14 Javascript
JS+HTML5 FileReader对象用法示例
Apr 07 Javascript
vue-cli配置flexible过程详解
Jul 04 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
Jun 04 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之apc
2013/05/15 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
PHP反射机制用法实例
2014/08/28 PHP
php中执行系统命令的方法
2015/03/21 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
koa-router源码学习小结
2018/09/07 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
python操作列表的函数使用代码详解
2017/12/28 Python
详解重置Django migration的常见方式
2019/02/15 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
大学拉赞助协议书范文
2014/09/26 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS