如何缩小画布上的绘图以适应屏幕大小

时间:2015-08-07 08:36:13

标签: javascript node.js canvas

首先,如果问题不明确,抱歉。

我有一个基于浏览器的多人游戏绘图游戏,使用javascript和socket.io。

我有一个画布可以画画,每30ms,x和y位置被发送到服务器,然后将它们播放给其他玩家。

但是这会导致一个问题,如果有人(a)有一个大屏幕,而某人(b)有一个较小的屏幕,b将无法看到整个平局a会看到一个小抽奖(相对于他的屏幕尺寸)。

如何在b屏幕上展开a缩放,并在a屏幕上缩小b平局?

N.B:客户端的源代码可在drawmythings.esy.es/app.js上找到

1 个答案:

答案 0 :(得分:2)

你需要知道屏幕A和B的屏幕尺寸(让我们只取宽度同样适用于高度)。在A到B之间缩放将是..

e.g。说A的屏幕是2000宽,B是1000宽。

当A在B的屏幕上查看一个点时:

(A.screenWidth / B.screenWidth ) * B.x-position

B屏幕上x = 250的位置= A屏幕上的四分之一=(2000/1000)* 250 = 500 = A屏幕上四分之一的距离。

相反,当B正在A屏幕上观看一个点时:

(B.screenWidth / A.screenWidth ) * A.x-position

A屏幕上x = 500的位置= B屏幕上四分之一的距离=(1000/2000)* 500 = 250 = B屏幕四分之一的距离。

在我看来,最好的选择是将绘制的坐标存储在一个恒定大小的“概念”屏幕中,比如2000 x 1500(任意)。因此,每个点将具有基于该比例的x位置和y位置。

当用户查看它时,您可以通过在([users screen width] / 2000) * x-position处绘制它来将其缩放到当前屏幕大小,对于Y位置和屏幕高度也是如此。

通过这种方式,游戏具有“标准”边界集,因此可以使用它来实现对移动等的限制,并且显示仅仅是用户对其的视图。但是我不知道你正在编写的程序有多实用,而且你已经有了一些进展。