参考Vim版本的BadApple改写而成。由于加载数据比较大,可能网速不给力的童鞋效果不太好,多刷新几次就好了,^_^。
运行环境:支持HTML5 Canvas的浏览器。
?1. 代码:
$(function() {
var BadApple = {
is_running: false,
data_index: 0,
data_count: 67,
is_loading: {},
progress: $(‘#progress‘),
init: function() {
var me = this,
stage = $(‘#stage‘),
i;
me.data_matrix = [];
for (i = 0; i < me.frame_row; ++i) {
me.data_matrix[i] = Array(me.frame_col).join(‘ ‘).split(‘‘);
}
me.canvas = stage.get(0);
me.ctx = me.canvas.getContext(‘2d‘);
me.canvas.width = me.frame_col * 7;
me.canvas.height = me.frame_row * 16;
me.ctx.fillStyle = ‘rgba(0, 0, 0, .05)‘;
me.ctx.fillRect(0, 0, me.canvas.width, me.canvas.height);
me.ctx.fillStyle = ‘#7E7E7E‘;
me.ctx.font = ‘12px monospace‘;
},
load_data: function (index, count, fn) {
var me = this;
if (!me.is_loading[index]) {
// mark is loading
me.is_loading[index] = true;
$.get(‘data/BadApple/data_‘ + index + ‘.txt‘, function (data) {
// finish loading
me.is_loading[index] = null;
me.data_index = index;
data = data.split(‘\n‘);
// update progress
me.progress.html((index / me.data_count * 100).toFixed(2) + ‘%‘);
if (me.data) {
me.data = me.data.concat(data);
}
// first time
else {
me.data = data;
var rc = data[0].split(‘ ‘);
me.frame_row = parseInt(rc[0]);
me.frame_col = parseInt(rc[1]);
$(‘#div_loading‘).remove();
me.init();
}
if (count > 1 && index < me.data_count) {
me.load_data(index + 1, count - 1, fn);
}
else {
fn && fn();
}
});
}
},
draw_frame: function(data) {
var me = this, i;
for (i = 0; i < data.length; ++i) {
me.data_matrix[data[i][0] - 1][data[i][1] - 1] = data[i][2];
}http://www.huiyi8.com/jianbihua/?
me.ctx.clearRect(0, 0, me.canvas.width, me.canvas.height);
for (i = 0; i < me.frame_row; ++i) {
me.ctx.fillText(me.data_matrix[i].join(‘‘), 4, i * 14 + 16);
}简笔画大全
},
play: function() {
var me = this,
i = 0,
j,
l,
r;
me.is_running = true;
me.interval || (me.interval = setInterval(function () {
if (me.is_running && i < me.data.length) {
l = me.data[++i];
r = [];
if (l && !/^\s*$/.test(l)) {
l = l.split(‘|‘);
for (j = 0; j < l.length; ++j) {
r[j] = l[j].split(‘_‘);
}
}
me.draw_frame(r);
// load data
if (i + 16 > me.data_index * 16 &&
me.data_index < me.data_count) {
me.load_data(me.data_index + 1, 2);
}
}
}, 70));
},
start: function() {
var me = this;
if (me.data) {
me.play();
}
else {
me.load_data(0, 1, function() {
me.play();
});
}
},
stop: function() {
this.is_running = false;
},
terminal: function () {
this.stop();
clearInterval(this.interval);
}
};
$(‘#stage‘).click(function() {
BadApple.is_running ?
BadApple.stop() :
BadApple.start();
}).click();
});
??
闲得蛋疼,JavaScript版本BadApple
时间: 2024-10-27 04:32:55
闲得蛋疼,JavaScript版本BadApple的相关文章
JavaScript版本信息
JavaScript版本信息下表列出了宿主应用实现的 Microsoft JScript 的版本信息. 语言要素1.02.03.04.05.05.15.5 Microsoft Internet Explorer 3.0x Microsoft Internet Information Server 1.0x Microsoft Internet Explorer 4.0x Microsoft Internet Information Server 4.0x Microsoft Windows Sc
能让你少写1000行代码的20个正则表达式(javascript版本)
正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var r = fieldValue.match(reg); if(r==null)alert('Date format error!'); 1 . 校验密码强度密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间. ^(?=.*\\d)(?=.*[a-z])
JavaScript版本的策略模式
俗话说,条条大路通罗马.在美剧<越狱>中,主角Michael Scofield就设计了两条越狱的道路.这两条道路都可以到达靠近监狱外墙的医务室. 同样,在现实中,很多时候也有多种途径到达同一个目的地.比如我们要去某个地方旅游,可以根据具体的实际情况来选择出行的线路. 如果没有时间但是不在乎钱,可以选择坐飞机. 如果没有钱,可以选择坐大巴或者火车. 如果再穷一点,可以选择骑自行车. 在程序设计中,我们也常常遇到类似的情况,要实现某一个功能有多种方案可以选择.比如一个压缩文件的程序,既可以选择zi
Base64编码解码(JavaScript版本)
<html> <HTML> <HEAD> <TITLE>Base64</TITLE> <script type='text/javascript'> var BASE64_ENCODE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var BASE64_DECODE_CHARS = [-1, -1, -1, -
快速排序(javascript版本)
基本过程 1. 选取数组中的一个元素作为基准(pivot) 2. 按照基准将数组分区,左区全部小于基准,右区全部大于基准,使用方法为原地置换(swap in place) 3. 对左右分区递归使用1和2步,直至左右分区只有一个或零个元素,排序完成 JavaScript实现 function fQuickSort(arr,low,high) { if(low >= high){ throw new Error('low should less than high'); } var pivotInd
选择排序(javascript版本)
基本过程 1. 遍历数组 2. 将当前元素与后面的元素进行比较,将最小的元素换到首位 3. 继续2中的步骤,直至数组只有最后两个元素比较,排序完成 javascript实现 function fSelectSort(arr){ var len=arr.length,temp=0; for(var i=0;i<len-2;i++){ var min = arr[i],index=i; //find min element for(var j=i+1;j<len-1;j++){ if(min &g
JavaScript 版本的 RSA加密库文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <script language="JavaScript" src="BigIn
Struts2-Ajax整合之JavaScript版本
1.Ajax的作用:能够在不重新加载页面的情况下,用异步的方式与后台服务器进行数据交互 2.Struts2-Json的jar包(包含阿里巴巴自己的jar包) commons-beanutils-1.7.0.jar commons-collections-3.2.1.jar commons-httpclient-3.1.jar commons-jexl-2.1.1.jar ezmorph-1.0.3.jar fastjson-1.1.40.jar gson-2.3.1.jar json-lib-2
吸血鬼数字算法参考 -- javascript版本
// 吸血鬼数字 java编程思想 第四章 75页 练习10 for (var i = 10; i <= 99; i++) { for (var j = i + 1; j < 99; j++) { if (i * j < 1000) continue; var result = (i * j + ''); var regx = new RegExp((i + '') [0] + '|' + (i + '') [1] + '|' + (j + '') [0] + '|' + (j + ''