Page MenuHomestyx hydra

behavior-konami.js
No OneTemporary

behavior-konami.js

/**
* @provides javelin-behavior-konami
* @requires javelin-behavior
* javelin-stratcom
*/
JX.behavior('konami', function() {
var sequence = [ 38, 38, 40, 40, 37, 39, 37, 39, 66, 65, 13 ];
var seen = [];
JX.Stratcom.listen('keyup', null, function(e) {
if (!sequence) {
return;
}
seen.push(e.getRawEvent().keyCode);
while (seen.length) {
var mismatch = false;
for (var i = 0; i < seen.length; ++i) {
if (seen[i] != sequence[i]) {
mismatch = true;
break;
}
}
if (!mismatch) {
break;
}
seen.shift();
}
if (seen.length == sequence.length) {
sequence = seen = null;
activate();
}
});
var prefixes = { '-webkit-': 1, '-moz-': 1, '-o-': 1, '-ms-': 1, '': 1 };
function generateCSS(selector, props) {
var ret = selector + '{';
for (var key in props) {
ret += key + ':' + props[key] + ';';
}
return ret + '}';
}
function generateAllCSS(selector, props) {
var more_props = {};
for (var key in props) {
for (var prefix in prefixes) {
more_props[prefix + key] = props[key];
}
}
return generateCSS(selector, more_props);
}
function modifyCSS(rule, key, value) {
rule.setProperty(key, value, '');
}
function modifyAllCSS(rule, key, value) {
for (var prefix in prefixes) {
modifyCSS(rule, prefix + key, value);
}
}
var top_rule;
function activate() {
var matrix = document.createElement('style');
matrix.textContent = [
generateAllCSS('html', {
background: '#000'
}),
generateAllCSS('body', {
perspective: '2048px',
background: 'transparent'
}),
generateAllCSS('*', {
'transform-style': 'preserve-3d'
}),
generateAllCSS('body > *', {
})
].join('\n');
document.head.appendChild(matrix);
top_rule = matrix.sheet.cssRules[3].style;
var first_event = null;
document.body.addEventListener('mousemove', function(e) {
if (!first_event) {
first_event = {x: e.screenX, y: e.screenY};
}
var dx = (e.screenX - first_event.x);
var dy = (e.screenY - first_event.y);
var x = -(dx / window.innerWidth) * (Math.PI / 2);
var y = (dy / window.innerHeight) * (Math.PI / 2);
var body_rotate = 'rotateY(' + x + 'rad) rotateX(' + y + 'rad)';
modifyAllCSS(top_rule, 'transform', body_rotate);
}, false);
}
});

File Metadata

Mime Type
text/plain
Expires
Tue, Feb 24, 10:58 PM (16 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
843271
Default Alt Text
behavior-konami.js (2 KB)

Event Timeline