Better browser compatiblity
This commit is contained in:
parent
9aaa4c28df
commit
3c7f164823
2 changed files with 58 additions and 55 deletions
|
|
@ -7,14 +7,14 @@ var cloneCanvas = function(self) {
|
|||
return c;
|
||||
};
|
||||
|
||||
CanvasRenderingContext2D.prototype.blitImage = function(image, sx ,sy, sw, sh, dx, dy, dw, dh) {
|
||||
function blitImage(ctx, image, sx ,sy, sw, sh, dx, dy, dw, dh) {
|
||||
var x; var y;
|
||||
for (x=0;x<dw;x++) {
|
||||
for (y=0;y<dh;y++) {
|
||||
this.drawImage(image,Math.floor(sx+x*(sw/dw)),Math.floor(sy+y*(sw/dw)),1,1,dx+x,dy+y,1,1);
|
||||
ctx.drawImage(image,Math.floor(sx+x*(sw/dw)),Math.floor(sy+y*(sw/dw)),1,1,dx+x,dy+y,1,1);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function createMinecraftHead(player,completed) {
|
||||
var skinImage = new Image();
|
||||
|
|
@ -23,8 +23,8 @@ function createMinecraftHead(player,completed) {
|
|||
headCanvas.width = 8;
|
||||
headCanvas.height = 8;
|
||||
var headContext = headCanvas.getContext('2d');
|
||||
headContext.blitImage(skinImage, 8,8,8,8, 0,0,8,8);
|
||||
headContext.blitImage(skinImage, 40,8,8,8, 0,0,8,8);
|
||||
blitImage(headContext, skinImage, 8,8,8,8, 0,0,8,8);
|
||||
blitImage(headContext, skinImage, 40,8,8,8, 0,0,8,8);
|
||||
completed(headCanvas);
|
||||
};
|
||||
skinImage.src = 'http://www.minecraft.net/skin/' + player + '.png';
|
||||
|
|
@ -35,14 +35,14 @@ function resizeImage(img,size) {
|
|||
canvas.width = size;
|
||||
canvas.height = size;
|
||||
var ctx = canvas.getContext('2d');
|
||||
ctx.blitImage(img, 0,0,img.width,img.height, 0,0,size,size);
|
||||
blitImage(ctx, img, 0,0,img.width,img.height, 0,0,size,size);
|
||||
return canvas;
|
||||
}
|
||||
|
||||
var players = {};
|
||||
var playerHeads = {};
|
||||
|
||||
function getMinecraftHead(player,size,completed) {
|
||||
var head = players[player];
|
||||
var head = playerHeads[player];
|
||||
// Synchronous
|
||||
if (!completed) {
|
||||
return (!head || head.working) ? null : head;
|
||||
|
|
@ -50,12 +50,12 @@ function getMinecraftHead(player,size,completed) {
|
|||
|
||||
// Asynchronous
|
||||
if (!head) {
|
||||
players[player] = { working: true, hooks: [{f:completed,s:size}] };
|
||||
playerHeads[player] = { working: true, hooks: [{f:completed,s:size}] };
|
||||
console.log('Creating head for ',player,'...');
|
||||
createMinecraftHead(player, function(head) {
|
||||
console.log('Created head for ',player,': ', head);
|
||||
hooks = players[player].hooks;
|
||||
players[player] = head;
|
||||
hooks = playerHeads[player].hooks;
|
||||
playerHeads[player] = head;
|
||||
var i;
|
||||
for(i=0;i<hooks.length;i++) {
|
||||
hooks[i].f(resizeImage(head,hooks[i].s));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue