lyrics.js |            |
|---|---|
|                                Effects to display lyrics then fade them away.  |                             $(document).ready (function () {
	cacophony.addInterval (text_display, (cacophony.beatLength () / 4));
	cacophony.addInterval (erase_text, 65);
	cacophony.addInterval (erase_text_queue, (cacophony.beatLength () * .7));
});
var text_queue = [],
	text_rendered = [],
	erase_pre_queue = [],
	erase_queue = [],
	cur_letter = 0,
	erased_letters = 0,
	cur_x = 30,
	cur_colour; |            
|                                Display the specified lyrics (or text of any kind) then fade them
away. You can include the input from the last inputtext or
inputtextarea by including  Usage:               |                             function lyrics (data) {
	data.txt = data.txt.replace ('{input}', input_value);
	text_queue.push (data);
} |            
|                                Display another letter from the text queue.  |                             function text_display () {
	if (text_queue.length == 0) {
		return;
	}
	if (cur_letter == 0) {
		cur_x = text_queue[0].x;
		cur_colour = (text_queue[0].colour) ? text_queue[0].colour : 'rgba(102, 102, 102, 1.0)';
	}
	var t = new ElementNode (E('span', text_queue[0].txt[cur_letter]), {
		x: cur_x,
		y: text_queue[0].y,
		fontSize: '20',
		fontFamily: 'courier new',
		noScaling: true,
		color: cur_colour
	});
	text_rendered.push ({t: t, l: text_queue[0].txt[cur_letter], o: 1.0});
	cacophony.canvas.append (t);
	cur_x += 16;
	cur_letter++;
	if (cur_letter == text_queue[0].txt.length) {
		erase_pre_queue.push (text_queue.shift ());
		cur_letter = 0;
	}
} |            
|                                Add another line to the erase queue.  |                             function erase_text_queue () {
	if (erase_pre_queue.length > 0) {
		erase_queue.push (erase_pre_queue.shift ());
	}
} |            
|                                Fade out currently displayed text.  |                             function erase_text () {
	if (erase_queue.length == 0) {
		return;
	}
	if (erased_letters >= erase_queue[0].txt.length) {
		for (var l = 0; l < erase_queue[0].txt.length; l++) {
			cacophony.canvas.remove (text_rendered[0].t);
			text_rendered.shift ();
		}
		erase_queue.shift ();
		erased_letters = 0;
		return;
	}
	for (var i = 0; i < erase_queue[0].txt.length / 2; i++) {
		r = -1;
		while (text_rendered.length > 0 && ! text_rendered[r]) {
			r = Math.floor (Math.random () * erase_queue[0].txt.length);
		}
		text_rendered[r].o -= 0.1;
		op = Math.round ((text_rendered[r].o) * 10) / 10;
		if (op >= 0) {
			text_rendered[r].t.content.style.opacity = op;
		}
		if (op == 0) {
			erased_letters++;
		}
	}
} |            
|                                Register effect.  |                             _e['lyrics'] = lyrics;
 |