【发布时间】:2011-11-18 22:38:09
【问题描述】:
我正在玩画布,它似乎在 FF6 中运行良好,但在 Chrome 13 中,我正在绘制的精灵显示不可靠。我已经完成some research 并发现问题源于在资产完全加载之前触发的函数。
在这里摆弄: http://jsfiddle.net/LqHY9/
相关 Javascript:
function sprite(ipath, sh, sw, ih, iw){
/* BASIC INFO FOR SPRITE */
this.frameWidth = sw;
this.frameHeight= sh;
frame_rows = ih/sh;
frame_columns = iw/sw;
num_frames = frame_columns*frame_rows ;
this.frame = new Array();
frameNumber = 0;
for(row = 0; row<frame_rows; row++){
for(i=0;i<frame_columns;i++){
this.frame[frameNumber] = {};
this.frame[frameNumber].offsetX = this.frameWidth*i;
this.frame[frameNumber].offsetY = this.frameHeight*row;
frameNumber++
}
}
this.sheight = sh;
this.swidth = sw;
this.raw = new Image();
this.raw.src = ipath;
}
animation=new sprite("http://www.melonjs.org/tutorial/tutorial_final/data/sprite/gripe_run_right.png",64,64,64,512);
context.drawImage(animation.raw, animation.frame[0].offsetX, animation.frame[0].offsetY, animation.frameWidth, animation.frameHeight, 0, 0, animation.frameWidth,animation.frameHeight)
(别担心,我的上下文变量已经定义好了,我只是把那部分删掉了,你可以在 JSFiddle 中看到整个内容。)
【问题讨论】:
-
为时已晚......哦,好吧......你可以在这里看到 onload 方法:jsfiddle.net/6QRtY。我建议首先加载您的图像资源,并为每个资源附加一个加载事件。在每个加载事件中,测试看是否所有资源都加载完毕(flag或类似),如果所有资源都加载完毕,则执行main方法。
标签: javascript html canvas