我将图像作为精灵添加到画布中,并使用.setScale(0.1).
问题是图像看起来像素化(而图像文件本身是高分辨率的)。
在我缩小图像之前,它看起来很好。该问题仅在缩放后发生。
这是我导入移相器 3 的图像文件(在我的计算机的图像查看器中缩放):

这是图像在缩小之前在 Phaser 3 上的外观(很好):
(这里的色调不同,但没关系)
这是缩小后的样子:
如您所见,结果非常像素化。 我怎样才能克服这个问题?
非常感谢提前这是我的代码的缩短版本:
var config = {
backgroundColor: "#ffb3c9",
type: Phaser.WEBGL,
width: 600,
height: 600,
parent: "pageContent",
physics: {
default: "arcade",
arcade: {
gravity: { y: 200 },
},
},
scene: {
preload: preload,
create: create,
},
};
var game = new Phaser.Game(config);
function preload() {
this.load.image("img", "img.png");
}
function create() {
var sprite = this.add.sprite(50,50,"img").setScale(0.1);
sprite.tint = 0x000000;
}
Run Code Online (Sandbox Code Playgroud)
我发现这个问题是由于使用了 HTML 画布造成的。但是,有一些方法可以克服这个问题:
我将Firebase添加到我的网站并创建了一个注册表单。当用户单击“注册”按钮时,它将使用“ Firebase身份验证”创建用户,然后更新用户的displayName,最后将有关该用户的一些数据添加到数据库中:
firebase.auth().createUserWithEmailAndPassword(email, password).then(function () {
profile = firebase.auth().currentUser;
profile.updateProfile({
displayName: "name-value"
}).then(function() {
// Update successful.
firebase.database().ref("/users/" + profile.uid).set({
data:{
country: "country-value",
city: "city-value"
}
});
});
}).catch(function(error) {
// Handle Errors here.
});
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我从以下位置更改数据库规则:
{
"rules": {
".read": true,
".write": true
}
}
}
Run Code Online (Sandbox Code Playgroud)
至:
{
"rules": {
"users": {
".read": true,
"$user": {
".write": "auth.token.name !== null"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用了auth.token.name,因为它是在指南中写的,用来检查用户的displayName是否存在(我计划稍后再检查它的更多内容)。尽管我之前设置了displayName,但“ firebase规则”以某种方式“认为” auth.token.name等于null。为什么会发生这种情况,我该怎么做才能使其起作用?
提前致谢 :)