zoukankan      html  css  js  c++  java
  • Html5 Canvas 实现滚动的图片

    今天一直在找html5 canvas的使用实例。想画一张地图,再画个小车在上面跑。运气好找到了一个大神写的js代码。该代码实现了图片的左右来回滚动,现在粘贴在博客里记录一下:

    <html>
    <head>
    <meta charset="utf-8" />
    <title>LScroll5.html</title>
    <script type="text/javascript">
    	var LScroll = {
    		img : null,
    		sc : null,
    		scx : null,
    		at : 0,
    		flag : true,
    		loadImg : function(srcs, callback) {
    			var mg = new Image();
    			mg.src = srcs;
    			mg.onload = function() {
    				callback(this);
    			}; // callback function
    			return LScroll.img = mg;
    		},
    		init : function(srcs) {
    			if (!document.body)
    				document.createElement('body');
    			if (!LScroll.sc) {
    				var sc = document.createElement('canvas');
    				LScroll.scx = sc.getContext('2d');
    				var callback = function(imgs) { // after onload image can be draw
    					sc.width = imgs.width / 4;
    					sc.height = imgs.height; //not style.
    					sc.style.backgroundColor = 'black';
    					sc.style.border = 'solid 1px white';
    					document.body.style.backgroundColor = 'black';
    					document.body.style.textAlign = 'center';
    					document.body.appendChild(LScroll.sc = sc);
    					LScroll.draw(LScroll.sc, LScroll.scx);
    				};
    				LScroll.loadImg(srcs, callback);
    			}
    		},
    		draw : function(sc, scx) {
    			scx.clearRect(0, 0, sc.width, sc.height);
    			scx.save();
    			scx.beginPath();
    
    			switch (LScroll.flag) {
    			case true:
    				if (-LScroll.at == LScroll.img.width - sc.width)
    					LScroll.flag = !LScroll.flag;
    				LScroll.at--;
    				break;
    			case false:
    				if (LScroll.at == 0)
    					LScroll.flag = !LScroll.flag;
    				LScroll.at++;
    			}
    
    			scx.drawImage(LScroll.img, LScroll.at, 0);
    			scx.restore();
    			setTimeout(function() {
    				LScroll.draw(sc, scx);
    			}, 10);
    		}
    	};
    	window.onload = function() {
    		LScroll.init('road-map.png');
    	};
    </script>
    </head>
    <body>
    
    </body>
    </html>
    

     图片是运行的效果。

  • 相关阅读:
    easyui datebox 年月 yyyyMM 格式
    input输入框输入中文时,监听的input事件 屏蔽拼音状态
    类路径文件读取方式
    Oracel 修改字段类型(有数据的情况)
    springboot(一)入门篇
    使用performance进行网页性能监控
    广告等第三方应用嵌入到web页面方案 之 使用iframe嵌入
    vue调试工具vue-devtools安装及使用
    vue-roter2 路由传参
    vue2.0实现分页组件
  • 原文地址:https://www.cnblogs.com/guxingzhe/p/4813509.html
Copyright © 2011-2022 走看看