基于加载文件百分比的RGB渐变

Roc*_*off 5 flash rgb hex gradient actionscript-3

我正在开发我的第一个Flash项目,对于我的预加载器,我想根据加载的百分比做一个非常简单的渐变.预加载器显示"77%加载...",其中数字77是一个名为percentLoaded的动态文本实例.我希望textColor of percentLoaded在#000000到#FFFFFF的渐变上以灰度变化.

因此,我不能简单地做到:

percentLoaded.textColor=(currentValue/100)*0xFFFFFF;
Run Code Online (Sandbox Code Playgroud)

这只是将textColor转换为FFFFFF的倍数,但输出颜色,因为它不是三个独立的组件.目前,这是我所拥有的:

percentLoaded.text=currentValue.toString();
percentLoaded.textColor=rgb2hex((currentValue/100)*255, (currentValue/100)*255, (currentValue/100)*255);
Run Code Online (Sandbox Code Playgroud)

其中"rgb2hex"是类中定义的函数:

public function rgb2hex(r:Number, g:Number, b:Number) {
    return '0x'+(r << 16 | g << 8 | b).toString(16).toUpperCase();
}
Run Code Online (Sandbox Code Playgroud)

看起来这实际上并没有改变字体的颜色.我已经导入了flash.text.TextField和flash.display.MovieClip,但我不确定我是否遗漏了其他内容.使用字符串连接这会更容易吗?或者是否可能有一些正在进行的currentValue/100并将其作为数字传递?

如果好奇,我在这里找到了rgb2hex的代码.

谢谢!

Lir*_*una 6

percentLoaded.textColor=(currentValue/100)*0xFFFFFF;
Run Code Online (Sandbox Code Playgroud)

这很接近.

要获得灰度,您确实需要拥有每个组件,但这仍然可以通过您的类似方法完成:

percentLoaded.textColor = uint((currentValue / 100) * 0xFF) * 0x010101;
Run Code Online (Sandbox Code Playgroud)