前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超级玛丽HTML5源代码学习------(二)

超级玛丽HTML5源代码学习------(二)

作者头像
wust小吴
发布2022-03-03 20:40:50
1.6K0
发布2022-03-03 20:40:50
举报
文章被收录于专栏:风吹杨柳风吹杨柳

首先放置源代码:

代码语言:javascript
复制
<!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 整个空间页面  */
body {
	/** 边框:无 0像素 */
	border:none 0px;
	/** 边外补白:向外填充0像素 */
	margin:0px;
	/** 向内填充:向内填充0像素 距上级边框0像素 */
	padding:10px;
	/** 设置字体大小 16px = 1em */
	font-size : 16px;
	/** 背景颜色:#f3f3f3 */
	background-color : #f3f3f3;
}

/** 画布 canvas */
canvas {
	/** 边框:1像素 实线 蓝色 */
	border : 1px solid blue; 
}
</style>


<script type="text/javascript">

//一个简单的图片加载函数,  callback为当所有图片加载完毕后的回调函数.
function loadImage(srcList,callback){
	// 数组变量,存放img
	var imgs={};
	// 变量存放srcList的长度
	var totalCount=srcList.length;
	// 变量 计算加载图片的数量
	var loadedCount=0;
	// 加载srcList中的图片
	for (var i=0;i<totalCount;i++){
		// 获取图片
		var img=srcList[i];
		// 利用img的id 来创建一个新的Image对象
		var image=imgs[img.id]=new Image();	
		// 复制img的URL到创建的image对象的URL中	
		image.src=img.url;
		// 启动image的onload事件
		image.οnlοad=function(event){
			// 如果启动,加载数量加1
			loadedCount++;
		}		
	}
	if (typeof callback=="function"){
		// 如果是回调函数,那么检查下加载数量是否大于srcList的长度
		var Me=this;
		function check(){
			if (loadedCount>=totalCount){
				callback.apply(Me,arguments);//check继承callback的属性和方法
			}else{		
				setTimeout(check,100);
			}	
		}
		check();
	}
	return imgs;
}
// 图像缓存变量
var ImgCache=null;
// 画布 canvas
var canvas=null;
// 画布上下文,利用它来绘制图像
var context=null;

function init(){
	
	// 创建canvas,并初始化 (我们也可以直接以标签形式写在页面中,然后通过id等方式取得canvas)
	canvas=document.createElement("canvas");
	//设置canvas对象的高度和宽度
	canvas.width=600;
	canvas.height=400;
	//将canvas加入到body的末尾
	document.body.appendChild(canvas);
		
	// 取得2d绘图上下文 
	context= canvas.getContext("2d");
	
	//将加载的所有图片存入ImgCache, 图片加载完成后, 调用startDemo
	// loadImage(srcList,callback)
	// loadImage([{},{}],startDemo)
	// 请仔细看{}里面的组成,就可以知道srcList的内容有哪些。(此处只含有id和URL)
	// ../表示根目录
	// 下面的程序表示现将图像player.png和图像bg.png存放到缓存ImgCache中
	ImgCache=loadImage( [ 
			{ 	id : "player",
				url : "../res/player.png"
			},
			{ 	id : "bg",
				url : "../res/bg.png"
			}
		], 
		startDemo );

}

function startDemo(){
	// Demo展示电脑图形与音乐的程式
	// 绘制背景
	// 表示从左上角(0,0)位置开始绘制
	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;
	// 选取图像的一部分矩形区域进行绘制
	// sx:图像上的x坐标  表示从player图像上截取的x坐标
       // sy:图像上的y坐标  表示从player图像上截取的y坐标
       // sw:矩形区域的宽度
       // sh:矩形区域的高度
       // dx:画在canvas的x坐标
       // dy:画在canvas的y坐标
 <span style="white-space:pre">	</span>// dw:画出来的宽度
        // dh:画出来的高度
        // ImgCache["player"]表示从图像缓存中取出player图像
	context.drawImage(ImgCache["player"], sx, sy, sw, sh, dx, dy, dw, dh );	

}


	
</script>

</head> 
<body οnlοad="init()"> 


<div align="center"><a href="http://www.linuxidc.com" target="_blank">www.Linuxidc.com</a></div>
</body>
</html>

运行截图:

有不对的地方还请各位高手指正

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com