我想要使用图像宽度来计算一个精灵的宽度,但是这个数字总是为0,为什么?this.image.width/number yield 0
function SpriteSheet(image, numFramesX, numFramesY, totalFrames) {
this.image = image;
this.numFramesX = numFramesX;
this.numFramesY = numFramesY;
this.totalFrames = totalFrames;
this.spriteWidth = this.image.width/this.numFramesX;
this.spriteHeight = this.image.height/this.numFramesY;
}
image.onload = function() {
console.log('Image has been loaded');
}
image.src = 'dance.png';
spritesheet = new SpriteSheet(image, 8, 10, 80);
spritesheet.spriteWidth和spritesheet.spriteHeight总是产生0。我垄断了问题“this.image.width”,因为它的工作原理,如果我把在图像的宽度手动。
this.spriteWidth = 880/this.numFramesX;
,而不是
this.spriteWidth = this.image.width/this.numFramesX;
,如果我使用控制台对象计算的话它也可以工作:
spritesheet.image.width/spritesheet.numFramesX
产生110
alert(this.image.width)和alert(this.numFramesX)告诉你什么? – SecurityMatt 2013-02-16 03:09:54
我在控制台中写了它,分别获得了880和'undefined'。控制台如何知道我指的是Spritesheet对象(使用'this')? – 2013-02-16 03:11:24
这是不对的,因为如果我只用'880'替换'this.image.width',代码就可以工作。留下this.numFramesX – 2013-02-16 03:18:50