ого! Круто! Всем огромное спасибо, буду разбираться в ответах =)
собственно после того, как увидел первый комментарий решил забить на помощь и сюда не заходил. Пилил гиковское признание в любви девушке, вот что у меня получилось в конце
http://forsaad.ruskyhosting.ru/
Теперь засяду переделывать =)
Ну и для тех, кому не хочется переходить по ссылке:
<!DOCTYPE HTML>
<head>
<style>
#matrix {
height:100%;
width:100%;
top:0;
left:0;
position:absolute;
background-color:#000;
color:#00aa00;
font-family:Courier New;
overflow:hidden;
line-height:10px;
}
</style>
</head>
<body>
<div id="matrix">
.
</div>
</body>
<script type="text/javascript">
function Column (maxlength) {
this.maxlength = maxlength;
this.speed = this.pause = getRandomInt(1, 5);
this.length = getRandomInt(Math.floor(maxlength/2), Math.floor(maxlength/4 + maxlength/2));
this.free_space = getRandomInt(0, Math.floor(maxlength/4));
this.iterator = 0;
//хардкод Start
this.stoped = false;
//END
this.text = new Array(this.length + this.free_space);
for (var i=0; i < this.text.length; i++) {
if (i < this.length) {
this.text[i] = String.fromCharCode(getRandomInt(65,90));
} else {
this.text[i] = " ";
}
}
this.length += this.free_space;
}
Column.prototype.inPause = function () {
var result = true;
//хардкод Start
if (!this.stoped) {
//END
this.pause--;
if (this.pause == 0) {
this.pause = this.speed;
result = false;
}
}
return result;
}
Column.prototype.needNew = function() {
result = false;
if (this.iterator == this.text.length + this.maxlength) {
result = true;
}
return result;
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function show() {
var result = '';
stop_this--;
for (var i=0; i < columns.length; i++) {
if (!columns[i].inPause()) {
columns[i].iterator++;
for (var j=0; j < columns[i].iterator; j++) {
if (columns[i].iterator - (j + 1) < array.length) {
if (columns[i].length - (j + 1) >= 0) {
array[columns[i].iterator - (j + 1)][i] = columns[i].text[columns[i].length - (j + 1)];
} else {
array[columns[i].iterator - (j + 1)][i] = " ";
}
//впадло гемороится, хардкод для любимой
var my_text_array = [ ' ', ' ', 'S', 'A', 'A', 'D', ' ', ' ', 'I', 'C', 'H', ' ', 'L', 'I', 'E', 'B', 'E', ' ', 'D', 'I', 'C', 'H', ' ', ' '];
if (stop_this<=0) {
if (columns[i].iterator - (j + 1) == Math.floor(array.length/2)) {
if (i > (Math.floor(array[0].length/2) - 13)) {
if (i < (Math.floor(array[0].length/2) + 12)) {
if (array[columns[i].iterator - (j + 1)][i] == my_text_array[i - Math.floor(array[0].length/2) + 12]) {
columns[i].stoped = true;
}}}}}
//END hardcode
}
}
if (columns[i].needNew()) {
columns[i] = new Column(array.length);
}
}
}
for (var i=0; i < array.length; i++) {
for (var j=0; j < array[i].length; j++) {
if (array[i][j]==" ") {
result += array[i][j];
} else if (i < array.length-1) {
if (i == Math.floor(array.length/2) && j>(Math.floor(array[0].length/2) - 13) && j<(Math.floor(array[0].length/2) + 12)){
result += '<font color="#FFFFFF">' + array[i][j] + '</font>';
} else if (array[i+1][j]==" ") {
// result += '<font color="#40FF00">' + array[i][j] + '</font>';
result += array[i][j];
} else {
result += array[i][j];
}
}
}
result += '</br>';
}
elem.innerHTML = result;
}
function stop_start() {
var elem = document.getElementById('stop');
if (stop) {
elem.value='Старт';
timer = function() {};
stop = false;
} else {
elem.value='Стоп';
timer = function() {
requestAnimationFrame(timer);
show();
}
timer();
stop = true;
}
}
{
var elem = document.getElementById('matrix');
var width_length = Math.floor(elem.offsetWidth/10)+1;
var heigth_length = Math.floor(elem.offsetHeight/10)+2;
stop_this = heigth_length*4;
var columns = new Array(width_length);
for (var i=0; i < width_length; i++) {
columns[i] = new Column(heigth_length);
}
var array = new Array(heigth_length);
for (var i=0; i < heigth_length; i++) {
array[i] = new Array();
for(var j=0; j < width_length; j++) {
array[i][j] = " ";
}
}
var stop = true;
timer = function() {
requestAnimationFrame(timer);
show();
}
timer();
}
</script>
</html>
так и не нашел, как добавить кнопку "посмотреть"