1

我正在用 Java 编写一些自定义控件,并使用动画进行过渡/淡入淡出/移动。

我这样做的方式是我开始一个新线程并对变量进行调整,并且使用paint()方法调整事物。

例子:

现在,我的问题是,假设我正在实现淡入。我要做的是增加 alpha 变量byte x //between 0-255并绘制一个矩形alphaLevel += x,例如(在伪代码中):

byte increment = 40;

for (byte i = 0; i < 255; i += increment)
{
    _parentClass.setAlphaLevel (i);
    _parentClass.repaint();
    Thread.sleep (10);    
}

_parentClass.setAlphaLevel (255);

我想知道什么是最低的,什么是最高的,我应该将睡眠设置为,这样动画看起来就不会断断续续?它是否与目标设备刷新率或人眼有关?再次与步骤相同的问题。有没有一个网站可以给我可以复制的好数字。

我问的原因是为了最大限度地提高效率,因为它将在电池供电的设备上运行,因此更多的 CPU 时间 = 更少的电池。你会把它设置成什么?

谢谢。

4

2 回答 2

0

您正在寻找的技术称为“双缓冲”。

遗憾的是,我没有时间向您展示示例,但这是您需要研究的。

于 2010-06-08T16:26:53.137 回答
0

我个人建议调查Trident 动画库,即使您在移动环境中使用它(从您的问题看来),该库似乎只有 100k 左右。

我不确定它是否适合您的情况,但值得一试。

在一个挑剔的点上...... byteJava中的数据类型不是无符号的,所以它的范围实际上是-128到127。

于 2010-06-08T17:47:34.747 回答