[英]How can I scale down a draw on canvas to fit screen size
首先,很抱歉,如果这个问题不清楚。
我有一个使用javascript和socket.io制作的基于多人浏览器的绘图游戏。
我有一个画布可以绘画,每隔30毫秒,x和y位置就会发送到服务器,服务器将其广播给其他玩家。
但这会导致问题,如果某人( a
)的屏幕较大,而某人( b
)的屏幕较小,则b
不会看到整个绘图,而a
会看到较小的绘图(相对于他的屏幕尺寸)。
我怎样才能扩大b
平局上a
屏幕,并缩小a
对平局b
屏幕?
注意:客户端的源代码位于drawmythings.esy.es/app.js中
您需要知道屏幕A和B的屏幕尺寸(让我们将宽度与高度相同)。 在A到B之间缩放是..
例如,假设A的屏幕为2000宽,B的屏幕为1000宽。
当A在B的屏幕上查看一个点时:
(A.screenWidth / B.screenWidth ) * Bx-position
B的屏幕上x = 250的位置= A的屏幕上四分之一的距离=(2000/1000)* 250 = 500 = A的屏幕上四分之一的距离
相反,当B正在查看A的屏幕上的一个点时:
(B.screenWidth / A.screenWidth ) * Ax-position
在A的屏幕上x = 500的位置= B的屏幕上四分之一的距离=(1000/2000)* 500 = 250 =在B的屏幕上四分之一的距离
在我看来,最好的选择是将绘制的坐标存储在恒定大小的“概念”屏幕中,例如2000 x 1500(任意)。 因此,根据该比例,每个点将具有x位置和y位置。
当用户查看它时,可以通过以([users screen width] / 2000) * x-position
进行绘制将其缩放到当前屏幕尺寸,与Y位置和屏幕高度相同。
这样,游戏就具有“标准”边界集,因此可以使用该边界来实现对移动等的限制,并且显示只是该用户的视图。 但是我不知道您正在编写的程序有多实用,并且您已经取得了一些进展。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.