Today I will present few JavaScript functions that might be helpful in game programming.
All these functions was tested in the latest Firefox, Opera and IE.
Converts numbers in a string value to the float/integer values. It is usefull when you have to manipulate on top,left,right,bottom or z-index attributes, but also it will work with any strings that contains numbers.
Converts a color string value to decimal rgb values.
function colorToRGB(val) {
val=val.toLowerCase();
var n=[];
if (val.indexOf(’rgb’)!=-1) {
n=((val.slice(val.indexOf(’rgb’)+4,val.indexOf(’)'))).replace(/ /g,”)).split(’,');
n[0]=parseInt(n[0]);
n[1]=parseInt(n[1]);
n[2]=parseInt(n[2]);
} else
if (val.indexOf(’#')!=-1) {
if ( val.charCodeAt(val.indexOf(’#')+4)==32 || isNaN(val.charCodeAt(val.indexOf(’#')+4))
) {
var x=val.split(”);
n[0]=parseInt(x[val.indexOf(’#')+1]+x[val.indexOf(’#')+1],16);
n[1]=parseInt(x[val.indexOf(’#')+2]+x[val.indexOf(’#')+2],16);
n[2]=parseInt(x[val.indexOf(’#')+3]+x[val.indexOf(’#')+3],16);
} else {
n[0]=parseInt(val.substr(val.indexOf(’#')+1,2),16);
n[1]=parseInt(val.substr(val.indexOf(’#')+3,2),16);
n[2]=parseInt(val.substr(val.indexOf(’#')+5,2),16);
}
} else
{
var col=[
‘alicebluef0f8ff’,'antiquewhitefaebd7′,’aqua00ffff’,
‘aquamarine7fffd4′,’azuref0ffff’,'beigef5f5dc’,
‘bisqueffe4c4′,’black000000′,’blanchedalmondffebcd’,
‘blue0000ff’,'blueviolet8a2be2′,’browna52a2a’,
‘burlywooddeb887′,’cadetblue5f9ea0′,’chartreuse7fff00′,
‘chocolated2691e’,'coralff7f50′,’cornflowerblue6495ed’,
‘cornsilkfff8dc’,'crimsondc143c’,'cyan00ffff’,
‘darkblue00008b’,'darkcyan008b8b’,'darkgoldenrodb8860b’,
‘darkgraya9a9a9′,’darkgreen006400′,’darkkhakibdb76b’,
‘darkmagenta8b008b’,'darkolivegreen556b2f’,'darkorangeff8c00′,
‘darkorchid9932cc’,'darkred8b0000′,’darksalmone9967a’,
‘darkseagreen8fbc8f’,'darkslateblue483d8b’,'darkslategray2f4f4f’,
‘darkturquoise00ced1′,’darkviolet9400d3′,’deeppinkff1493′,
‘deepskyblue00bfff’,'dimgray696969′,’dodgerblue1e90ff’,
‘firebrickb22222′,’floralwhitefffaf0′,’forestgreen228b22′,
‘fuchsiaff00ff’,'gainsborodcdcdc’,'ghostwhitef8f8ff’,
‘goldffd700′,’goldenroddaa520′,’gray808080′,
‘green008000′,’greenyellowadff2f’,'honeydewf0fff0′,
‘hotpinkff69b4′,’indianredcd5c5c’,'indigo4b0082′,
‘ivoryfffff0′,’khakif0e68c’,'lavendere6e6fa’,
‘lavenderblushfff0f5′,’lawngreen7cfc00′,’lemonchiffonfffacd’,
‘lightblueadd8e6′,’lightcoralf08080′,’lightcyane0ffff’,
‘lightgoldenrodyellowfafad2′,’lightgrayd3d3d3′,’lightgreen90ee90′,
‘lightpinkffb6c1′,’lightsalmonffa07a’,'lightseagreen20b2aa’,
‘lightskyblue87cefa’,'lightslategray778899′,’lightsteelblueb0c4de’,
‘lightyellowffffe0′,’lime00ff00′,’limegreen32cd32′,
‘linenfaf0e6′,’magentaff00ff’,'maroon800000′,
‘mediumaquamarine66cdaa’,'mediumblue0000cd’,'mediumorchidba55d3′,
‘mediumpurple9370d8′,’mediumseagreen3cb371′,’mediumslateblue7b68ee’,
‘mediumspringgreen00fa9a’,'mediumturquoise48d1cc’,'mediumvioletredc71585′,
‘midnightblue191970′,’mintcreamf5fffa’,'mistyroseffe4e1′,
‘moccasinffe4b5′,’navajowhiteffdead’,'navy000080′,
‘oldlacefdf5e6′,’olive808000′,’olivedrab6b8e23′,
‘orangeffa500′,’orangeredff4500′,’orchidda70d6′,
‘palegoldenrodeee8aa’,'palegreen98fb98′,’paleturquoiseafeeee’,
‘palevioletredd87093′,’papayawhipffefd5′,’peachpuffffdab9′,
‘perucd853f’,'pinkffc0cb’,'plumdda0dd’,
‘powderblueb0e0e6′,’purple800080′,’redff0000′,
‘rosybrownbc8f8f’,'royalblue4169e1′,’saddlebrown8b4513′,
’salmonfa8072′,’sandybrownf4a460′,’seagreen2e8b57′,
’seashellfff5ee’,’siennaa0522d’,’silverc0c0c0′,
’skyblue87ceeb’,’slateblue6a5acd’,’slategray708090′,
’snowfffafa’,’springgreen00ff7f’,’steelblue4682b4′,
‘tand2b48c’,'teal008080′,’thistled8bfd8′,
‘tomatoff6347′,’turquoise40e0d0′,’violetee82ee’,
‘wheatf5deb3′,’whiteffffff’,'whitesmokef5f5f5′,
‘yellowffff00′,’yellowgreen9acd32′];
for (i in col) if (val.indexOf(col[i].substr(0,col[i].length-6))!=-1) break;
n=colorToRGB(’#'+col[i].substr(col[i].length-6));
}
return n;
}
Gets the current positions of first (X,Y) and opposite (X+width,Y+height) vertex of an element based on container coordinates.
Returns true if two objects overlapping each other. Simple collision detection based on object coordinates (getLayerCrd(id) function is required)