`

画线 动画效果

 
阅读更多

若转帖请注明原出处,谢谢!

动画手册:http://ecd.tencent.com/css3/guide.html

室内导航路径动态画线 :

插件:https://github.com/camoconnell/lazy-line-painter

室内导航目前还不算成熟,但公司接到项目恰好有个很小的室内导航,为了使这个室内导航更具动态效果更显眼,要求路线是向用铅笔画线一样慢慢画出,研究了下上面的插件之后自己摘除了里面的一段code并加以改动了下实现了画线。

我是用的raphael.js 插件来做一些事情的,并且lazy-line-painter本身也是要依赖于raphael的

lazy-line-painter的部分原理(不一定很准确):比如在一张室内图片上有2点A 和 B,lazy-line-painter首先会画出A和B点之间的线Line_AB_1但是把这条线设为透明的,在视觉上根本看不到这条线,之后呢根据你所设的时间(即你设想总共画出这条线的时间)把这条线分为若干份,之后不断的画出一小份一小份的线,最后组成一条新的路径线路并把之前的那个线Line_AB_1删掉,接下来看代码

 

var draw = Raphael('map_navigation_container', 964, 893);
var lineStr = "M498,467L512,452,L512,444L548,445L547,496L525,497L498,467";
var polyline = draw.path(lineStr).attr({ "stroke": "none","stroke-width": 0,"fill-opacity": 0});
 print({
        'canvas': draw, 
        'pathstr': polyline, 
        'duration': 5000,
        'attr': {
                 "fill-opacity": 0,
                 "stroke": "#000",
                 "stroke-dasharray": null,
                 "stroke-linecap": "round",
                 "stroke-linejoin": "round",
                 "stroke-opacity": 1,
                 "stroke-width": 3
                 },
         'callback': function () { }
 	}, this);
var print = function( settings, octx ) {

        var canvas = settings.canvas, 
            duration = settings.duration, 
            attr = settings.attr;


        var guide_path = settings.pathstr;


        var path = canvas.path( guide_path.getSubpath( 0, 1 ) ).attr( attr ),
            total_length = guide_path.getTotalLength( guide_path ),
            start_time = new Date().getTime(),
            interval_length = 25;


        var interval_id = setInterval( function()
        {
            var elapsed_time = new Date().getTime() - start_time,
                this_length = elapsed_time / duration * total_length,
                subpathstr = guide_path.getSubpath( 0, this_length );


            attr.path = subpathstr;


            path.animate( attr, interval_length );
            if ( elapsed_time >= duration )
            {
                clearInterval( interval_id );
                if (settings.callback !== undefined) {
                    settings.callback();
                }
                guide_path.remove();
            }
        }, interval_length );
分享到:
评论

相关推荐

    WPF实现画线动画效果

    在WPF中实现画线动画效果是一个比较常见的需求,尤其是在绘制图表、制作动画效果等场景中。 在上述内容中,介绍了如何使用WPF后台代码来实现一条直线的动画绘制效果,即让线条像笔画一样在画布上逐渐画出来。实现这...

    css3线条波浪动画效果

    在这款名为“css3线条波浪动画效果”的项目中,开发者利用CSS3的动画(animation)特性,结合PNG图像,创建了一个生动且吸引人的波浪线条动画效果。以下是对这个项目的详细解析: 首先,CSS3的动画功能允许我们为...

    Flutter实现添加购物车的抛物线动画效果

    Flutter实现添加购物车的抛物线动画效果,更加Tween动画利用了抛物线运动的算法求出path路径下每个坐标,然后canvas

    WPF各种动画效果例子

    它提供了强大的图形渲染和用户体验设计能力,其中包括各种动画效果。本压缩包文件包含了一系列WPF动画效果的例子,可以帮助开发者深入理解和实践这些技术。 在WPF中,动画是通过Timeline类和Storyboard类来实现的。...

    抛物线动画效果

    抛物线动画效果在IT行业中,特别是在游戏开发、UI设计以及动态图形制作等领域,是一种常见的视觉表现手法。这种效果能够给用户带来生动、自然的视觉体验,常常用于模拟物体的抛掷、下落等物理运动。本文将深入探讨...

    仿美团、饿了么加入购物车抛物线动画效果

    在本文中,我们将深入探讨如何实现“仿美团、饿了么加入购物车的抛物线动画效果”,这一功能常见于许多电商与外卖应用中,为用户界面增添动态美感。我们将主要使用Kotlin语言来实现这一效果,同时也涉及到贝塞尔曲线...

    加入购物车动画带抛物线效果

    实现"加入购物车"的抛物线动画,通常需要以下步骤: 1. **坐标系统**:建立二维坐标系,确定商品的初始位置和购物车的目标位置。这可以通过设置X轴和Y轴坐标来实现。 2. **计算轨迹**:根据物理学的抛物线公式,...

    Qt动画效果实现

    在本文中,我们将深入探讨如何在Qt环境中实现各种动画效果,包括Widget属性动画,如位移、缩放和不透明度动画。Qt是一个强大的跨平台应用程序开发框架,它提供了丰富的功能来创建美观且动态的用户界面。让我们一起...

    网页动画素材 WebGL基于canvas画布绘制3D噪音线条酷炫动画特效。(抖音资料)

    网页动画素材 WebGL基于canvas画布绘制3D噪音线条酷炫动画特效。(抖音资料)网页动画素材 WebGL基于canvas画布绘制3D噪音线条酷炫动画特效。(抖音资料)网页动画素材 WebGL基于canvas画布绘制3D噪音线条酷炫动画...

    Qt利用帧动画实现所有动画效果(QWidget)

    在Qt框架中,帧动画(QPropertyAnimation)是一种强大的工具,可以用来实现各种复杂的动画效果。本教程将探讨如何利用Qt的帧动画机制在QWidget上创建动态视觉效果。通过访问提供的博客文章链接...

    MFC窗口特效之动画效果

    在本主题中,我们关注的是"MFC窗口特效之动画效果",这涉及到如何为对话框或其派生类添加动态的打开和关闭动画。 首先,让我们理解什么是动画效果。在计算机图形学中,动画是通过连续显示一系列稍有差异的画面来...

    Visual C++ 实现动画效果

    在编程领域,动画效果是为用户界面增添动态性和交互性的关键元素。对于使用Visual C++ 2008的开发者来说,实现动画效果是提升应用吸引力的重要手段。本篇文章将详细探讨如何在Visual C++ 2008环境下创建动画效果,...

    delphi实现动画效果

    这些API提供了丰富的函数,用于画线、填充区域、绘制文本等,为创建独特动画效果提供了可能。 5. **屏幕保护程序**:提及到制作屏保程序,Delphi也提供了相应的接口。通过Windows API调用ScreenSaverProc函数,...

    jQuery图片边框线条动画效果

    在本文中,我们将深入探讨如何实现一个jQuery图片边框线条动画效果,如标题所述,当鼠标悬停在图片上时,两条线从图片的对角线出发,形成类似河流交汇的视觉效果。这个效果通常用于增加网站交互性和用户体验,使用户...

    Qt自定义控件动画效果按钮

    本文将深入探讨如何在Qt中为按钮添加动画效果,以增强用户界面的交互性和吸引力。 首先,我们需要了解Qt中的QGraphicsView和QGraphicsItem体系,这是实现动画效果的基础。QGraphicsView提供了一个二维图形视图框架...

    androidの高仿支付宝扫描动画效果

    在Android开发中,实现支付宝扫描动画效果是一种提升用户体验的重要手段,尤其在支付、扫码等应用场景中。本教程将深入探讨如何在Android项目中创建一个高仿支付宝的扫描动画效果,帮助开发者实现类似的功能。 首先...

    OpenLayers动画效果显示路线

    在本案例中,我们将讨论如何利用OpenLayers实现动画效果来展示路线。 首先,动画效果在OpenLayers中通常是通过时间序列和地理坐标点的移动来实现的。`Point.js`可能包含了定义这些坐标点的数据结构,它们可能是沿着...

    wpf窗体打开和关闭的动画效果

    在Windows Presentation Foundation (WPF) 中,为窗体(Window)添加打开和关闭的动画效果是一种增强用户体验的有效方法。WPF 提供了丰富的动画系统,允许开发者创建各种复杂的视觉效果,包括平滑的窗体过渡动画。...

    两种动画效果

    标题中的“两种动画效果”可能指的是在编程领域中实现的不同类型的动态视觉效果,这通常涉及到图形用户界面(GUI)开发或者游戏开发。在GUI中,动画可以用来提升用户体验,比如过渡效果、滑动菜单等;在游戏开发中,...

    Android 贝塞尔曲线动画 拿去直接用

    在Android中,我们可以利用贝塞尔曲线来实现动态、流畅的动画效果,为用户界面增添视觉吸引力。 贝塞尔曲线由控制点定义,分为一阶、二阶、三阶乃至更高阶。在一阶贝塞尔曲线中,只有一个控制点;二阶贝塞尔曲线有...

Global site tag (gtag.js) - Google Analytics