我试图做一个闪烁的对象,即将它的alpha值从0增加到255(逐渐),然后回到0,然后重复。优雅地向上和向下计数
有没有一种方法可以做到这一点,而不使用一些布尔值?它前往增量很简单:
alpha = time.elapsed()%256;
但是,什么是一个很好的方式得到它算后再次回落?
我试图做一个闪烁的对象,即将它的alpha值从0增加到255(逐渐),然后回到0,然后重复。优雅地向上和向下计数
有没有一种方法可以做到这一点,而不使用一些布尔值?它前往增量很简单:
alpha = time.elapsed()%256;
但是,什么是一个很好的方式得到它算后再次回落?
如何使用sin函数,这样的衰落是更愉快的,你会得到你想要的。
ABS(((X + 255)%510) - 255)将线性去从0到255 0和255之间的x和线性地从255到0之间的255到510.然后它重复(当然510期)。
我想技术上这是正确的答案,因为我先说增量。某事的答案从递减开始,但是它的操作更少,所以我更喜欢它。无论哪种方式都很好;) – mpen 2009-09-20 22:27:56
为什么你需要这个?请不要说“表演”。如果你想制作一个闪烁的对象,那意味着每秒最多60次更新,这意味着无论你如何做到这一点,它在性能方面都会达到零差。那么让你的代码难以阅读的原因是什么? – jalf 2009-09-20 22:21:10
@jalf:其实我们的目标是让阅读更容易。使用一对if语句来跟踪它是否正在递增或递减使其复杂化。如果这可以在一条线上完成,我会说这更简单。 – mpen 2009-09-20 22:30:23
较短,但我不会称它更简单或更具可读性。如果它是如此“简单”,为什么你需要问这个问题?你无法自己弄清楚,所以当你从现在起3个月后遇到代码时,你相信什么能让你明白? – jalf 2009-09-20 23:08:13