如何解决为什么sprite.tintBottomLeft在相位器3中返回错误的颜色?
我目前正在使用Phaser 3进行项目。 我想先保存一个精灵(下面的代码部分中的“对象”)当前颜色,然后再对其进行修改。 我将tintBottomLeft,tintBottomright,tintTopLeft和tintTopRigh的值保存到其他4个变量中。
object.on('pointerover',function() {
console.log(object);
console.log("_tintBL",object._tintBL);
prevIoUsTintBL = object.tintBottomLeft;
prevIoUsTintBR = object.tintBottomright;
prevIoUsTintTL = object.tintTopLeft;
prevIoUsTintTR = object.tintTopRight;
object.setTint(0xff00ff);
});
object.on('pointerout',function() {
object.clearTint();
object.setTint(prevIoUsTintTL,prevIoUsTintTR,prevIoUsTintBL,prevIoUsTintBR);
prevIoUsTintBL = object.tintBottomLeft;
prevIoUsTintBR = object.tintBottomright;
prevIoUsTintTL = object.tintTopLeft;
prevIoUsTintTR = object.tintTopRight;
});
问题是精灵当前的颜色是16711680(使用console.log在对象属性中打印,链接有图像)
但是当我单独访问变量_tintBL时,颜色现在为255,我真的不明白为什么会这样。
有帮助吗?
解决方法
好的,我在另一个论坛上得到了答案。所以这是答案:
”,因为在3.50版之前,色度曾经存储在BGR中而不是RGB中。https://github.com/photonstorm/phaser/blob/v3.24.1/src/gameobjects/components/Tint.js#L14
鉴于此值已在设置器中自动应用,但未在getter中反转,因此该值与设置的值不同。
要么自己转换为RGB,要么更新到不再有问题的3.50 Beta版本。”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。