微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么sprite.tintBottomLeft在相位器3中返回错误的颜色?

如何解决为什么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版本。”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。