【发布时间】:2011-06-25 08:12:10
【问题描述】:
我有点坚持这一点。我想确定两个 opacity int 值。一个应该增加,另一个应该按小时减少。
想象一天由 4 个部分组成。夜晚、日出、白天和日落。每个部分都由 重叠的两个图像。夜晚有夜间图像和日出图像。在午夜夜间图像的不透明度可以说是 255,而日出实际上是不可见的。
当时间流逝到例如4 点钟夜间图像的不透明度降低,而日出的不透明度增加。晚上 5 点结束,图像不透明度为 0,而日出图像的不透明度为 255。
因此,在 4 个部分的每一个中,我都想计算两个不透明度值,一个增加另一个减少。在每个部分中,不透明度从 255 变为 0,在另一侧从 0 变为 255。
这就是我在几小时内分开零件的方式
switch (hour) {
//night to sunrise
case 23: case 0: case 1: case 2: case 3: case 4:
[self setSetting:1 andOpacity:opacIn andOpacity:opacOut];
break;
//sunrise to day
case 5: case 6: case 7: case 8: case 9: case 10:
[self setSetting:1 andOpacity:opacIn andOpacity:opacOut];
break;
//day to sunset
case 11: case 12: case 13: case 14: case 15: case 16:
[self setSetting:4 andOpacity:opacIn andOpacity:opacOut];
break;
//sunset to night
case 17: case 18: case 19: case 20: case 21: case 22:
[self setSetting:2 andOpacity:opacIn andOpacity:opacOut];
break;
}
我用这个解决方案试过了
int opacIn = hour * 10;
if (opacIn >= 230) {
opacIn += 25;
}
int opacOut = 255 - opacIn;
问题在于,这决定了参考一整天的不透明度。所以它只从 255 变为 0 一次。但我希望一天中的每一天都这样。
对此有什么想法吗?如何确定每个部分的不透明度?
【问题讨论】:
标签: objective-c algorithm