Ich habe ein bisschen eine Bindung - Ich versuche, ein Sprite auf dem Bildschirm zu zeichnen, indem Sie ein einzelnes Bild auf eine Weise abschneiden, um nur einen kleinen Teil des eigentlichen Bildes anzuzeigen. Nichts erscheint jedoch und ich erhalte keine Fehler in meinem Code. Irgendwelche Ideen, was falsch sein könnte?HTML5 Canvas DrawImage nicht Zeichnung Bild
Ich habe einen kleinen zusätzlichen Code in dem Ausschnitt unten, wo ich eine Linie zu dem Punkt, wo das abgeschnittene Bild angezeigt werden soll, aber es gibt nichts da, egal was ich tue.
Edit: Es kann erwähnenswert sein, dass dieser Code noch nicht funktioniert, auch wenn ich nicht versuchen, das Bild zu schneiden. Ich kann das Bild einfach nicht sehen.
JSfiddle: http://jsfiddle.net/m7y406z8/
$(function() {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var window_width = window.innerWidth;
var window_height = window.innerHeight;
var Player = function(x, y, spriteset, direction, elevation, animationframe, action) {
this.x = x;
this.y = y;
this.spriteset = new Image();
this.spriteset.src = spriteset;
this.direction = direction;
this.elevation = elevation;
this.animationframe = animationframe;
this.action = action;
a_imageAssets.push(this.spriteset);
}
var a_imageAssets = [];
var peasant = new Player(window_width/2, window_height/2, "http://tchwi.com/player/sprites/peasant.png", "s", 0, 0, 0);
switch (peasant.animationframe) {
case 0: //if first frame of animation is selected then this is the sprite sheet
peasant.standingCells = [{
top: 0,
right: 25,
bottom: 29,
left: 0
}, //n
{
top: 0,
right: 47,
bottom: 29,
left: 25
}, //nw
{
top: 0,
right: 69,
bottom: 29,
left: 47
}, //w
{
top: 0,
right: 91,
bottom: 29,
left: 69
}, //sw
{
top: 0,
right: 116,
bottom: 29,
left: 91
}, //s
{
top: 0,
right: 138,
bottom: 29,
left: 116
}, //se
{
top: 0,
right: 160,
bottom: 29,
left: 138
}, //e
{
top: 0,
right: 182,
bottom: 29,
left: 160
} //ne
];
}
var drawCharacter = function(character) {
drawCells = {}; //object to inject the current cell into
switch (character.action) {
case 0: //if character is standing still
(character.direction = "n" ? drawCells = character.standingCells[0] : '');
(character.direction = "nw" ? drawCells = character.standingCells[1] : '');
(character.direction = "w" ? drawCells = character.standingCells[2] : '');
(character.direction = "sw" ? drawCells = character.standingCells[3] : '');
(character.direction = "s" ? drawCells = character.standingCells[4] : '');
(character.direction = "se" ? drawCells = character.standingCells[5] : '');
(character.direction = "e" ? drawCells = character.standingCells[6] : '');
(character.direction = "ne" ? drawCells = character.standingCells[7] : '');
break;
}
var dx = character.x + (drawCells.right - drawCells.left)/2;
var dy = character.y + (drawCells.bottom - drawCells.top)/2;
var dWidth = drawCells.right - drawCells.left;
var dHeight = drawCells.bottom - drawCells.top;
var sx = drawCells.left;
var sy = drawCells.top;
var sWidth = drawCells.right - drawCells.left;
var sHeight = drawCells.bottom - drawCells.top;
ctx.drawImage(character.spriteset, dx, dy, dWidth, dHeight, sx, sy, sWidth, sHeight);
console.log(character.spriteset);
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(dx, dy);
ctx.stroke();
ctx.strokeStyle = 'black';
console.log(dx + ", " + dy);
};
var drawBackground = function() {
ctx.fillStyle = 'red';
ctx.fillRect(0, 0, window_width, window_height);
};
var renderCanvas = function() {
ctx.clearRect(0, 0, window_width, window_height);
drawBackground();
drawCharacter(peasant);
console.log('huh');
};
var canvasSizing = function() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
}
canvasSizing();
renderCanvas();
});
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="main.css" />
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<canvas id="canvas" width="100%" height="100%"></canvas>
</body>
</html>
Oh verdammt. Das ist ein dummer Fehler ... Scheint trotzdem nicht zu funktionieren? – tomc
Es funktioniert, nur noch einmal neu laden – terales