【发布时间】:2013-03-03 02:00:00
【问题描述】:
我目前正在将 KineticJS 用于填充窗口的 Canvas 应用程序。画布包含几个主要相对于屏幕中心定位的形状,但也会出现几个其他形状,它们将位于屏幕边缘。
在第一次显示页面时计算所有这些坐标不是问题,但我还没有找到在调整窗口大小之后/调整窗口大小时处理形状坐标的方法。
通过 jQuery,在调整窗口大小时会调整舞台及其图层的大小,但由于这不会改变形状的坐标,以前居中的项目不再居中。
我真的需要遍历每个形状并重新计算它们的坐标吗?不是微不足道的,因为它们是用不同的公式计算的。
旁注,我通过直接访问 Canvas(= w/o KineticJS)实现了相同的应用程序,并通过重新渲染整个画布来处理调整大小;)由于渲染方法包括坐标计算,所以一切都在正确的位置。
【问题讨论】:
-
你会坚持做你想要的。
-
好吧.. 不幸的是,手动/直接方式并没有给我舒适的事件处理等,所以我宁愿继续迁移到 kineicjs ;) 无法想象像调整大小这样的基本事情窗口提出了这么大的问题:)
-
为什么不直接在 kineticjs 中缩放整个舞台,这样就不需要重新计算了。查看我制作的行星轨道调整器:'cs.neiu.edu/~tsam/planets'(拖动太阳调整大小)。这使用比例,而不是重新计算位置。调整窗口大小时,可以将相同的逻辑应用于窗口大小和缩放舞台
-
由于我使用了几个基于光栅的图像,因此调整大小会缩放这些图像并降低它们的清晰度。除此之外,我的形状周围的房间应该为其他元素留出空间;)