通过viewport缩放页面的代码——Michael Learns To Rock系列

很多游戏原来在设计的时候,是为pc而设计的,分辨率较高,比如设置宽度为900。这些游戏如果想简单修改就兼容移动终端的话,只能通过设置页面viewport来实现,不用修改任何游戏代码,只简单设置viewport就可兼容移动终端。


可以封装了一段代码来实现这个功能。
(function(){
	function ajustViewport(gameWidth,gameHeight,isLandscope){
		var viewportNode,
		    viewportContent = "",
		    ua = window.navigator.userAgent.toLowerCase(),
		    _width = isLandscope ? Math.max(window.innerHeight,window.innerWidth) : Math.min(window.innerHeight,window.innerWidth),
		    _height = isLandscope ? Math.min(window.innerHeight,window.innerWidth) : Math.max(window.innerHeight,window.innerWidth),
		    rate = _width / gameWidth,
		    rate2 = _height / gameHeight,
		    scalable = ",user-scalable=no",
		    width;
		if (rate > rate2) {
			width = Math.round(_width/rate2);
		} else {
			width = gameWidth;
		}
		if (ua.indexOf("android") >= 0) {
			viewportContent = "width=" + width + scalable + ",target-densitydpi=320";
		}else if(ua.indexOf("ios") >= 0 || ua.indexOf("iphone") >= 0 || ua.indexOf("ipod") >= 0 || ua.indexOf("ipad") >= 0){
			viewportContent = "width=" + width + scalable;
		}
		viewportNode = document.querySelector('meta[name=viewport]');
		if(viewportNode){
			viewportNode.content = viewportContent;
		}else{
			viewportNode = document.createElement("meta");
			viewportNode.name = "viewport";
			viewportNode.content = viewportContent;
			document.head.appendChild(viewportNode);
		}
	}
	window.ajustViewport = ajustViewport;
})();

调用的时候,在页尾调用 ajustViewport(gameWidth,gameHeight) ; 即可。由于这种缩放是直接通过设置viewport,改变设备dpi缩放比率实现的缩放,所以所有的像素位置,包括事件位置都和pc上一模一样,是种很好的缩放方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值