记 egret 颜色传值踩坑

今天遇到了一个很蛋疼的问题,用egret引擎开发的小游戏发布到微信小游戏后,使用Win PC的客户端打开后发生了闪退。

why? 内存爆了?运行环境问题?

nonono!多方追查下发现原因是这个:

// spTxt: egret.textField
spTxt.strokeColor = 1.5;

可以看到,描边颜色被设置成了1.5。。。

在egret官网,对颜色值的要求是:可以接受一个16进制的颜色值,也可以接受其他进制的数字。但推荐使用16进制。

这样一看1.5也没问题啊!

但是再看一下egret源码中对颜色值的处理方法:

    /**
     * 转换数字为颜色字符串
     * @param value {number} 颜色值,例如 0xffffff
     * @returns {string} 颜色字符串,例如"#ffffff"。
     * @version Egret 2.4
     * @platform Web,Native
     * @includeExample egret/utils/toColorString.ts
     * @language zh_CN
     */
    function toColorString(value) {
        if (value < 0)
            value = 0;
        if (value > 16777215)
            value = 16777215;
        var color = value.toString(16).toUpperCase();
        while (color.length > 6) {
            color = color.slice(1, color.length);
        }
        while (color.length < 6) {
            color = "0" + color;
        }
        return "#" + color;
    }

可以看到egret的处理方法是把数字转为16进制字符串,然后多的保留最后6位,少的前边补“0”。

so...

console.log(toColorString(1.5))
// "#0001.8"

输出了一个貌似颜色值的东西。

我们在微信小游戏中尝试使用这个作为颜色值。在开发者工具表现为黑色,在我的手机上(三星 note8)是鲜艳的红色,在WIN PC的客户端里就发生了文章开头的事情[捂脸]。

总结:

使用egret引擎在传颜色值的时候,最好传入16的整数(0x000000),其次是其他进制整数,但绝对不可以是浮点数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值