首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

组件位置平滑挪动的一种方法

2012-12-27 
组件位置平滑移动的一种方法在使用Swing做界面时,有时为了效果更绚丽或者能提供更好的用户体验?我们通常希

组件位置平滑移动的一种方法

在使用Swing做界面时,有时为了效果更绚丽或者能提供更好的用户体验

?

我们通常希望一些变化,尤其是位置的变化能以一种平滑过渡的方法呈现出来

?

算法思想很简单,就是差值法,在起点和终点之间计算很多冗余位置,间隔时间分别经过各个位置,最终在到达终点

?

我写的算法是等时间间隔,步长逐渐变短的过程

?

步长变化趋势采用 f(x)=1/x 函数来模拟,在减少复杂度的情况下能很好的保证效果

?

当然下面的代码是阻塞的,必须在线程中运行才能显示出动画效果

?

?

c 表示想要移动的组件, p2 表示目的坐标 ( ?起始坐标是当前位置 )

?

可以改的地方有

32,表示移动次数

12,表示每次移动延时

?

?

public static void smoothMove(Component c, Point p2) {    try {        int i = 0;        Point p1 = c.getLocation();        float da;        while (i++ < 32) {            da = 1f / i - 1f / 32;            c.setLocation((int) (p2.x + (p1.x - p2.x) * da + 0.5), (int) (p2.y + (p1.y - p2.y) * da + 0.5));            c.getParent().repaint();            Thread.currentThread();            Thread.sleep(12);        }    } catch (Exception e) {    }}
?

?

热点排行