pixelbox
Version:
A framework to fast-prototype pixel-based games
93 lines (79 loc) • 4.15 kB
JavaScript
//▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
/** @module domUtils
* @desc dom utilities
* @author Cedric Stoquer
*/
var DOCUMENT_BODY = document.body;
//▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
exports.createDom = function (type, className, parent) {
parent = parent || DOCUMENT_BODY;
var dom = document.createElement(type);
parent.appendChild(dom);
if (className) dom.className = className;
return dom;
};
//▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
exports.createDiv = function (className, parent) {
return exports.createDom('div', className, parent);
};
//▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
exports.removeDom = function (dom, parent) {
parent = parent || DOCUMENT_BODY;
parent.removeChild(dom);
};
//▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
exports.makeClickable = function (dom, onClic) {
dom.addEventListener('mousedown', function (e) {
e.stopPropagation();
e.preventDefault();
onClic.call(dom, e);
});
return dom;
};
//▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
function startDrag(dom, e) {
var d = document;
rect = dom.getBoundingClientRect();
var startX = e.clientX - rect.left;
var startY = e.clientY - rect.top;
function dragMove(e) {
e.preventDefault();
dom.style.left = (e.clientX - startX) + 'px';
dom.style.top = (e.clientY - startY) + 'px';
}
function dragEnd(e) {
e.preventDefault();
d.removeEventListener('mouseup', dragEnd);
d.removeEventListener('mousemove', dragMove);
}
d.addEventListener('mousemove', dragMove, false);
d.addEventListener('mouseup', dragEnd, false);
}
//▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
exports.makeDragable = function (handle, target) {
target = target || handle;
handle.addEventListener('mousedown', function (e) {
e.stopPropagation();
e.preventDefault();
startDrag(target, e);
});
return handle;
};
//▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
exports.addCss = function (css) {
var stylesheet = document.createElement('style');
stylesheet.type = 'text/css';
var textNode = document.createTextNode(css);
stylesheet.appendChild(textNode);
document.head.appendChild(stylesheet);
return stylesheet;
};
//▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
exports.addCssRef = function (href) {
var stylesheet = document.createElement('link');
stylesheet.href = href;
stylesheet.rel = 'stylesheet';
stylesheet.type = 'text/css';
document.head.appendChild(stylesheet);
return stylesheet;
};