KineticJS-缩放舞台到视口
KineticJS - Scaling stage to viewport
我正在努力实现1366x756的默认分辨率。
我会根据视口来放大和缩小它。类似于此处显示的示例:http://blogs.msdn.com/b/davrous/archive/2012/04/06/modernizing-your-html5-canvas-games-with-offline-apis-file-apis-css3-amp-hardware-scaling.aspx
我有点困惑如何在KineticJS中实现这一点,因为它抽象掉了使用的画布元素。
我想实现的基本上是:
window.addEventListener("resize", OnResizeCalled, false);
function OnResizeCalled() {
canvas.style.width = window.innerWidth + 'px';
canvas.style.height = window.innerHeight + 'px';
}
我知道这不是一个完美的解决方案,因为这会拉伸画布,无法保持纵横比。
我目前正在使用以下内容:
stage.setWidth(window.innerWidth);
stage.setHeight(window.innerHeight);
stage.setScale(window.innerWidth / 1366)
这或多或少是我想要的,但是:
鼠标/触摸操作不会缩放到新的比例。
而不是使用GPU来升级画布对象的本机缩放。
有什么想法吗?感谢:)
在我试图帮助解决的另一个问题上,用户自己(user848039)找到了一个解决方案,可以处理鼠标位置和KineticJS缩放。
这就是问题所在:kinetijs stage.getAbsoluteMousePosition()?。
功劳归他所有,但我修改了他的公式,以满足更常见的KineticJS设置:
var mousePos = stage.getMousePosition();
mousePos.x = mousePos.x/stage.getScale().x-stage.getAbsolutePosition().x/stage.getScale().x+stage.getOffset().x;
mousePos.y = mousePos.y/stage.getScale().y-stage.getAbsolutePosition().y/stage.getScale().y+stage.getOffset().y;
也许jsFiddle不是最好的例子,因为您希望舞台是innerWidth和innerHeight。在jsFiddle框架中,这些测量似乎有点奇怪,但如果你查看代码,你会发现我设置的阶段与你上面提到的完全相同。使用mousePos
的新计算,mousePos.x
和mousePos.y
将为您的比例返回正确的坐标。
相关文章:
- 将视口底部滚动到元素底部
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- 使用条件语句,使 jquery fadeIn/fadeOut 仅在视口 >= 480px 时才有效
- 宽度为100%的CSS元素位于视口之外
- CSS3:当页面向下滚动到第一个视口时,是否可以在元素上触发转换
- 如何设置浏览器视口大小
- Javascript em根据窗口/视口尺寸调整大小,不影响文档样式的text/css
- 检测视口并重定向到不同的主页
- 如何在按住鼠标按钮且光标在视口外时检测鼠标离开
- iOS iPad平板电脑渲染视口不正确
- 移动设备上的视口问题
- 视口大小更改时自动刷新页面
- 在移动设备上获取视口大小
- 在 ReactJS 中获取视口/窗口高度
- 使jquery延迟加载插件在视口内工作
- Div 设置为视口高度,即使调整屏幕大小也是如此
- jQuery调整大小和视口检查点
- 将html元素渲染到浏览器视口
- 用于管理视口布局的Javascript库
- KineticJS-缩放舞台到视口