`
jeschou
  • 浏览: 1498 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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

阅读更多

在使用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) {
    }
}
 

 

分享到:
评论

相关推荐

    易语言组件左右移动

    在编程领域,特别是针对中文编程环境,易语言(E Language)是一种非常受欢迎的编程语言,它以简体中文为语法,降低了编程的门槛,让更多的人能够接触和学习编程。本主题聚焦于“易语言组件左右移动”,这涉及到窗口...

    易语言鼠标平滑移动源码.zip

    易语言是一种专为中国人设计的编程语言,它的目标是让编程变得简单易学。这个"易语言鼠标平滑移动源码.zip"文件包含了一个使用易语言编写的程序,该程序实现了鼠标指针的平滑移动功能。对于初学者或者想要深入理解...

    易语言鼠标平滑移动源码.7z

    易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语法,降低了编程的门槛,使得更多非计算机专业背景的人也能轻松学习编程。在本压缩包“易语言鼠标平滑移动源码.7z”中,包含的是用易语言编写的实现...

    让图象平滑移动无闪烁感

    双缓冲技术是另一种有效手段,它涉及到图形控件和显示内存的管理。在双缓冲中,我们首先在后台缓冲区绘制整个场景,包括移动的图像,然后一次性将后台缓冲区的内容复制到前台缓冲区(即屏幕)。这种方法避免了部分...

    flex 图片缩放移动组件

    在IT行业中,Flex是一种基于ActionScript 3.0和Flash Player的开源框架,主要用于构建富互联网应用程序(RIA)。本文将详细讲解如何使用Flex创建一个图片缩放移动组件,以及涉及的相关知识点。 首先,我们要理解...

    易语言动态绘制平滑曲线源码

    易语言是一种专为中国人设计的、简单易学的编程语言,它的目标是让不懂英文的用户也能方便地进行计算机编程。动态绘制平滑曲线在图形界面编程中是一项重要的技术,通常用于数据可视化、游戏开发或者艺术创作等领域。...

    displaceable一个小巧高性能且可配置的JavaScript库可在鼠标移动时平滑移动元素

    《displaceable:轻量级高性能的JavaScript库——实现鼠标移动元素平滑移动的魔法》 在现代网页设计中,动态交互元素已经成为提升用户体验的重要手段。"displaceable"作为一个小巧而高性能的JavaScript库,正是为此...

    cocos Creator 使用摄像机进行背景的差速移动

    Cocos Creator的相机系统提供了一种更高级的方式来控制场景的视图,包括视角、缩放和移动等。在本案例中,我们将重点讨论如何使用相机来实现背景的差速移动。 首先,我们需要创建一个相机对象。在Cocos Creator中,...

    Unity3D中移动物体位置的几种方法.pdf

    此外,Transform.position 还可以结合 Vector3.Lerp 或 SmoothDamp 实现平滑移动。Vector3.SmoothDamp 方法能够提供更加平滑的过渡,同时还可以控制速度和阻尼,常用于相机跟随效果: ```csharp Vector3 smoothPos ...

    Unity3D中移动物体位置的几种方法.docx

    - **Vector3.Lerp, Vector3.Slerp, Vector3.MoveTowards**: 这些方法常用于平滑地在两点间移动物体,Lerp 适用于直线运动,Slerp 适用于保持角度的球形插值,MoveTowards 可以限制物体的最大速度,适用于模拟物理...

    一个ReactNative气泡球组件球在屏幕内按照随机速度移动

    在这个项目“react-native-bouncing-ball-master”中,我们看到的是一个利用React Native创建的动态气泡球组件,这个组件能够使气泡在屏幕上以随机的速度移动,从而提供一种有趣且动态的视觉效果。 首先,我们要...

    行业分类-设备装置-一种手写输入法的笔迹平滑处理方法及手写输入法.zip

    本文将深入探讨标题所提及的"一种手写输入法的笔迹平滑处理方法及手写输入法",并基于描述和标签来解析这一主题的相关知识点。 首先,手写输入法允许用户通过直接书写来输入文本,极大地提高了输入效率和用户体验,...

    Unity3D中指定角色从一个点移动到另一个点

    综上所述,Unity3D中实现角色从一个点移动到另一个点涉及了Transform组件的使用、选择合适的移动控制方式(Rigidbody或CharacterController)、使用线性插值平滑移动、处理碰撞和路径规划,以及结合动画系统和用户...

    C++曲线平滑

    在IT行业中,曲线平滑是一种常见的数据处理技术,特别是在图形绘制和数据分析领域。本文将深入探讨如何使用C++编程语言,结合Visual Studio 2017和QT 5.12.3库来实现曲线平滑功能。QT库提供了一套强大的QChart组件,...

    Camera摄像机移动三种方式unitypackage

    其次,**环绕视角**是一种允许玩家围绕特定物体或角色旋转查看的机制,常用于展示细节或者环境。在Unity中,可以通过改变Camera的位置和朝向来实现。`围绕物体旋转的摄像机完美版.unitypackage`可能包含了这样的实现...

    一种消毒装置的制作方法.docx

    滚轮设计允许消毒装置在地面平滑移动,而飞行驱动器则让消毒装置具备空中消毒的能力。 此外,消毒装置还配备了净化组件,用于进一步净化空气。监测组件环绕消毒装置,当检测到障碍物时,通过处理器控制移动组件避开...

    行业分类-设备装置-一种界面图标移动控制方法和装置.zip

    标题中的“一种界面图标移动控制方法和装置”指的是在人机交互领域中,关于图形用户界面(GUI)设计的一种创新技术。这种技术着重于优化用户的交互体验,特别是针对图标的操作,如拖放、滑动等,以提升操作效率和...

    易语言组件左右移动源码-易语言

    易语言是一种专为中国人设计的编程语言,它的目标是让编程变得简单、直观,使得非专业程序员也能快速上手。这个资源"易语言组件左右移动源码"是一个适合初学者的入门教程,它包含了实现组件在界面上左右移动功能的源...

    电信设备-一种基于移动中间件的交互界面动态更新的方法.zip

    本文将深入探讨一种基于移动中间件的交互界面动态更新方法,该方法适用于电信设备,旨在优化服务性能,提高系统灵活性,并确保用户界面始终保持最新状态。 首先,我们需要理解移动中间件的概念。移动中间件是一种...

Global site tag (gtag.js) - Google Analytics