日期:2014-05-17 浏览次数:20590 次
<!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="-1" /> <meta http-equiv="Cache-Control" content="no-cache" /> <title>My first Game</title> <style type="text/css"> body { border:none 0px; margin:0px; padding:10px; font-size : 16px; background-color : #f3f3f3; } canvas { border : 1px solid blue; } </style> <script type="text/javascript"> //一个简单的图片加载函数, callback为当所有图片加载完毕后的回调函数. function loadImage(srcList,callback){ var imgs={}; var totalCount=srcList.length; var loadedCount=0; for (var i=0;i<totalCount;i++){ var img=srcList[i]; var image=imgs[img.id]=new Image(); image.src=img.url; image.onload=function(event){ loadedCount++; } } if (typeof callback=="function"){ var Me=this; function check(){ if (loadedCount >= totalCount){ callback.apply(Me,arguments); } else{ setTimeout(check,100); } } check(); } return imgs; } var ImgCache=null; var canvas=null; var context=null; function init(){ // 创建canvas,并初始化 (我们也可以直接以标签形式写在页面中,然后通过id等方式取得canvas) canvas=document.createElement("canvas"); canvas.width=600; canvas.height=400; document.body.appendChild(canvas); // 取得2d绘图上下文 context= canvas.getContext("2d"); //将加载的所有图片存入ImgCache, 图片加载完成后, 调用startDemo var imgs = [ { id : "player",url : "../res/player.png"}, { id : "bg",url : "../res/bg.png"} ]; ImgCache=loadImage(imgs,startDemo ); } function startDemo(){ // 绘制背景 var dx=0, dy=0 ; context.drawImage(ImgCache["bg"],dx,dy); //绘制站在地上的player, 坐标为200,284 var sx=0, sy=60, sw=50, sh=60; var dx=400, dy=284, dw=50, dh=60; context.drawImage(ImgCache["player"], sx, sy, sw, sh, dx, dy, dw, dh ); // 第一个参数image可以用HTMLImageElement,HTMLCanvasElement或者HTMLVideoElement作为参数。 // sx和sy是image所要绘制的起始位置,sw和sh是image所要绘制区域(相对image的sx和sy坐标的偏移量)的宽度和高度值。 // dx和dy是image在canvas中定位的坐标值;dw和dh是image在canvas中即将绘制区域(相对dx和dy坐标的偏移量)的宽度和高度值; } </script> </head> <body onload="init()"> </body> </html>