腾讯AlloyTeam正式发布pasition制作酷炫Path过渡动画

腾讯AlloyTeam正式发布pasition制作酷炫Path过渡动画

腾讯AlloyTeam正式发布pasition - 制作酷炫Path过渡动画

淘建站为您提供更多_其它特效_动画效果_动画_腾讯,在此特别感谢您对我们的支持与厚爱!

查看演示

演示不了,点击反馈

加入收藏

下载 119 次

下载资源

32 积分

特别说明:本站资源来自网友发布分享,仅供学习与参考,请勿用于商业用途,若有侵权请联系删除(272966172@qq.com)。
分类:html5 > SVG 难易程度:

腾讯AlloyTeam正式发布pasition制作酷炫Path过渡动画使用指南

pasition.lerp
你可以通过 pasition.lerp 方法拿到插值中的shapes:

var shapes  = pasition.lerp(pathA, pathB, 0.5)
//拿到shapes之后你可以在任何你想要渲染的地方绘制,如canvas、svg、webgl等
...
pasition.animate
pasition.animate({
    from : fromPath,
    to : toPath,
    time : time,
    easing : function(){ },
    begin :function(shapes){ },
    progress : function(shapes, percent){ },
    end : function(shapes){ }
})
path从哪里来?你可以从svg的path的d属性获取。

支持所有的SVG Path命令:

M/m = moveto
L/l = lineto
H/h = horizontal lineto
V/v = vertical lineto
C/c = curveto
S/s = smooth curveto
A/a = elliptical Arc
Z/z = closepath
Q/q = quadratic Belzier curve
T/t = smooth quadratic Belzier curveto

举个例子:

pasition.animate({
            from: 'M 40 40 Q 60 80 80 40T 120 40 T 160 40 z',
            to: 'M32,0C14.4,0,0,14.4,0,32s14.3,32,32,32 s32-14.3,32-32S49.7,0,32,0z',
            time: 1000,
            easing : function(){ },
            begin:function(shapes){ },
            progress : function(shapes, percent){
                //你可以在任何你想绘制的地方绘制,如canvas、svg、webgl
            },
            end : function(shapes){ }
        });
对上面传入的配置项目一一解释下:

from 起始的路径
to 终点的路径
time 从from到to所需要的时间
easing 缓动函数(不填默认是匀速运动)
begin 开始运动的回调函数
progress 运动过程中的回调函数
end 运动结束的回调函数
在progress里可以拿到path转变过程中的shapes和运动进度percent(范围是0-1)。下面来看看shapes的结构:

[
    [
       [],    //curve
       [],    //curve
       []    //curve   
    ],      //shape      
    [[],[],[],[],[]],     //shape      
    [[],[],[],[],[]]     //shape    
]
在开发者工具里截图:



每条curve都包含8个数字,分别代表三次贝塞尔曲线的 起点 控制点 控制点 终点。



每个shape都是闭合的,所以shape的基本规则是:

每条curve的终点就是下一条curve的起点
最后一条curve的终点就是第一条curve的起点
知道基本规则之后,我们可以进行渲染,这里拿canvas里渲染为例子:

Fill模式:

function renderShapes(context, curves, color){
    context.beginPath();
    context.fillStyle = color||'black';
    context.moveTo(curves[0][0], curves[0][1]);
    curves.forEach(function(points){
        context.bezierCurveTo(points[2], points[3], points[4], points[5], points[6], points[7]);
    })
    context.closePath();
    context.fill();
}

shapes.forEach(function(curves){
    renderShapes(context,curves,"#006DF0")
})
Stroke模式:

function renderCurve(context, points, color){
    context.beginPath();
    context.strokeStyle = color||'black';
    context.moveTo(points[0], points[1]);
    context.bezierCurveTo(points[2], points[3], points[4], points[5], points[6], points[7]);
    context.stroke();
}

shapes.forEach(function(curves){
    curves.forEach(function (curve) {
        renderCurve(context, curve, "#006DF0")
    })    
})
当然你也可以把shapes转成SVG的命令在SVG渲染,这应该不是什么困难的事情:

    function toSVGPath(shapes){
        //把 shapes数组转成 M....C........C........Z M....C.....C....C...Z 的字符串。
    }
这个函数可以自行尝试一下,生成出的字符串赋值给SVG的Path的d就可以了。

声明:本资料由淘建站会员提供,如转载注明来源,资料来源淘建站免费素材库:https://www.taojz.cn/texiao/2745.html
腾讯AlloyTeam正式发布pasition制作酷炫Path过渡动画 希望对你有帮助,感谢您的支持!
  • html5 svg适用于手机端播放器按钮动画特效

    html5 svg适用于手机端播放器按钮动画特效

  • jQuery仿qq投票统计动画效果

    jQuery仿qq投票统计动画效果

  • jQuery开启百宝箱摇头效果

    jQuery开启百宝箱摇头效果

  • jquery.easing动画插件

    jquery.easing动画插件

  • html5交互设计乐器演奏动画特效

    html5交互设计乐器演奏动画特效

  • 一张图片的动画效果的演示

    一张图片的动画效果的演示

  • 红星放金光动画

    红星放金光动画

  • html5鼠标悬停叠加图片弹性动画特效

    html5鼠标悬停叠加图片弹性动画特效

  • html5 canvas绘制逼真3D瀑布流动画特效

    html5 canvas绘制逼真3D瀑布流动画特效

  • css3怪物表情动画特效

    css3怪物表情动画特效

  • 纯css3绘制逼真神奇宝贝伊布动画特效

    纯css3绘制逼真神奇宝贝伊布动画特效

  • 纯css3音阶波浪loading加载动画特效

    纯css3音阶波浪loading加载动画特效

  • 留言(0)
    头像
     阿里云限量代金券,戳我领取
    1 2