あなたがcontext.drawImage
のクリッピングフォームを使用してspritesheetから任意のスプライトを切り出すことができる:
context.drawImage(
// from the spritesheet
spritesheet,
// go to x,y on the spritesheet and cut out a width x height sized subimage
spriteX, spriteY, spriteWidth, spriteHeight,
// and draw that subimage on the canvas at canvasX, canvasY
canvasX, canvasY, spriteWidth, spriteHeight
);
例コードとデモ:
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
// define a few sprite's position on the spritesheet
var pacOpenRight={ x:20,y:20,width:20,height:20 };
var ghostRed={ x:40,y:80,width:20,height:20 };
var spritesheet=new Image();
spritesheet.onload=start;
spritesheet.src="https://dl.dropboxusercontent.com/u/139992952/stackoverflow/PacmanSpritesheet.png";
function start(){
ctx.fillRect(0,0,cw,ch);
drawSprite(pacOpenRight,50,50);
drawSprite(ghostRed,70,50);
}
function drawSprite(spriteDef,canvasX,canvasY){
ctx.drawImage(
// from the spritesheet
spritesheet,
// go to x,y on the spritesheet and
// cut out a width x height sized subimage
spriteDef.x, spriteDef.y, spriteDef.width, spriteDef.height,
// and draw it on the canvas at x,y
canvasX, canvasY, spriteDef.width, spriteDef.height
);
}
<canvas id="canvas" width=300 height=300></canvas>
「スプライトを変更する」とはどういう意味ですか?スプライトシートから1つのスプライトを描画したいだけなら、['context.drawImage']のクリッピングバージョンを使うことができます(http://stackoverflow.com/questions/21446087/using-a-sprite-sheet-with-multiple-スプライト/ 21461197#21461197)。 – markE
私はパックマンスプライトを掃除機に交換し、幽霊は "ダストボーン" – Kasperb29
私はパックマンを知らないが、私は掃除機とダストボーンがスプライトシート上の既存のスプライトであると想定している。クリッピングバージョンの 'context.drawImage'を使用して、スプライトシートから真空クリーナースプライトとダストボーンスプライトを描画します。たとえば、この前の[Stackoverflow Q&A](http://stackoverflow.com/questions/21446087/using-a-sprite-sheet-with-multiple-sprites/21461197#21461197)を参照してください。 – markE