javascript - 有没有办法通过 Canvas 缩放来避免信箱?

标签 javascript canvas pixi.js

我正在用 Javascript 开发一个小项目,使用 Pixi.js 作为渲染引擎。但是,我只发现了几种似乎最适合当前版本的将 Canvas 缩放到全窗口的方法。然而,它确实有一个警告,因为它会根据方向在两侧生成信箱。

Pixi 是否可以完全避免黑边?

enter image description here

这是我到目前为止的代码,因为它与缩放有关:

var application = null;
var GAME_WIDTH = 1060;
var GAME_HEIGHT = 840;
var ratio = 0;
var stage = null;
application = new PIXI.Application(
{
    width: GAME_WIDTH,
    height: GAME_HEIGHT,
    backgroundColor: 0x00b4f7,
    view: document.getElementById("gwin")
});

stage = new PIXI.Container(true);

window.addEventListener("resize", rescaleClient);

function rescaleClient()
{
    ratio = Math.min(window.innerWidth / GAME_WIDTH, window.innerHeight / 
    GAME_HEIGHT);
    stage.scale.x = stage.scale.y = ratio;
    application.renderer.resize(Math.ceil(GAME_WIDTH * ratio), Math.ceil(GAME_HEIGHT * ratio));     
}

我的目标是实现与 Agar.io/Slither.io 类似的全屏/窗口效果,但是我还没有找到一种令人满意的方法来轻松实现。似乎确实有使用 Pixi 实现此目的的示例,但代码通常是闭源的,而且它们似乎使用了外部工具,例如 Ionic 和 Phonegap。

最佳答案

我终于找到了答案。我接近正确的轨道,但还需要应用一些东西。

application.renderer.view.style.position = "absolute";
application.renderer.view.style.display = "block";
application.renderer.autoResize = true;
application.renderer.resize(window.innerWidth, window.innerHeight);

这在内部设置了一些额外的东西,同时对调整大小脚本进行了微小的修改......

ratio = Math.min(window.innerWidth / GAME_WIDTH, window.innerHeight / GAME_HEIGHT);
stage.scale.x = stage.scale.y = ratio;
renderer.resize(window.innerWidth, window.innerHeight); 

正确配置,以便相关的渲染器窗口现在填满屏幕而不会挤压内容。

这并不容易发现。很多教程只把它留在前半部分,并假设这是人们希望做的。

关于javascript - 有没有办法通过 Canvas 缩放来避免信箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48173367/

相关文章:

javascript - 将圆 Angular 应用于路径/多边形

javascript - 类似Photoshop中功能 "Levels"的实现

reactjs - 结合react-leaflet和leaflet-pixi-overlay

javascript - 如何读取外部脚本/样式的内容?

javascript - 去掉@后面的单词

javascript - 如何使用手机指纹传感器作为生物识别(指纹)扫描仪

c# - 等效于 Windows 窗体中的 Canvas

javascript - Pixi.js - 窗口大小调整后重新定位元素

javascript - Pixi.js Retina 显示 Canvas 尺寸翻倍

javascript - jQuery中如何获取=号后的url值