Canvas 缩放画布时,EaselJS对象位置会发生变化
我正在使用以下调整大小功能缩放画布:Canvas 缩放画布时,EaselJS对象位置会发生变化,canvas,responsive,easeljs,Canvas,Responsive,Easeljs,我正在使用以下调整大小功能缩放画布: function resize() { var w, h; var size = [1920, 1080]; ratio = size[0] / size[1]; if (window.innerWidth / window.innerHeight >= ratio) { w = window.innerHeight * ratio; h = window.innerHeight;
function resize() {
var w, h;
var size = [1920, 1080];
ratio = size[0] / size[1];
if (window.innerWidth / window.innerHeight >= ratio) {
w = window.innerHeight * ratio;
h = window.innerHeight;
} else {
w = window.innerWidth;
h = window.innerWidth / ratio;
}
$('canvas').width(w);
$('canvas').height(h);
var scale = w/1920;
stage.scaleX = stage.scaleY = scale;
}
window.onresize = resize;
使用HTML和CSS
<canvas width="1920" height="1080"></canvas>
<style>
canvas {
width: 1920px;
height: 1080px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
</style>
在一个大画布中间呈现,但当我调整大小时,它移向顶部,至少看起来也不成比例。
所以我想我必须对这些位置应用相同的比率,但我似乎无法得到正确的公式。任何帮助都将不胜感激 此示例()似乎可以正确缩放和移动 经过反复试验,我发现问题出在自动售票机上createjs.Ticker.addEventListener("tick", tick);
function tick(event) {
if (!event.paused) {
stage.update();
}
}
但是…我确实需要动画的自动售票机。任何想法都将不胜感激 一些注意事项:
宽度
和高度
设置为所需的大小。有时,我们将画布设置为像素数的2倍或0.5倍,然后使用CSS对其进行反向缩放以基本上“缩放”它。这是一个好办法,要么减少像素(保真度更低,速度更快),要么增加像素(高分辨率),但这将是我唯一一次使用CSS我希望这是有道理的。谢谢@Lanny。您是否介意编辑实际的代码笔本身,以便我可以看到更改?在我的代码笔中,你会看到它确实可以正确缩放,但只有当股票行情器关闭时…这当然不是一个真正的选项。
createjs.Ticker.addEventListener("tick", tick);
function tick(event) {
if (!event.paused) {
stage.update();
}
}
$('canvas').width(w);
$('canvas').height(h);
stage.canvas.width = w;
stage.canvas.height = h;
stage.update(); // Must update because a resize clears the stage.