为什么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,我真的不明白为什么会这样。

有帮助吗?

console.log screenchot

解决方法

好的,我在另一个论坛上得到了答案。所以这是答案:

”,因为在3.50版之前,色度曾经存储在BGR中而不是RGB中。https://github.com/photonstorm/phaser/blob/v3.24.1/src/gameobjects/components/Tint.js#L14

鉴于此值已在设置器中自动应用,但未在getter中反转,因此该值与设置的值不同。

要么自己转换为RGB,要么更新到不再有问题的3.50 Beta版本。”

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...