自定义时间线插件

入职已有两个月了,从以前的前后台均开发到目前的专向做前端,最大的感触便是更加有耐心了,不管什么样的效果及布局,都能静下心来从解决方案到观摩别人解决方案,进而实现。这样看来人的精力是有限的是对的。然而写着写着会越加意识到自己该提高下代码质量,特别是对于日渐庞大的工程及需要不断维护和拓展的实现来说,代码规范、高质量是至关重要的一个环节,这是自己接下来需要提高和注意的地方。

在此以自己近期遇到的一个开发任务:时间线的开发过程,来记录下自己此刻的思路与状态。最终实现效果如下图:

整体布局思路:纯css布局,大小采用百分比,以便适应各种分辨率环境;

时间轴算法:依据已有时间点,找出最大时间及最小时间,以最小时间为起点,包含最大时间且为6的倍数时间点为结束时间;

时间段定位:根据开始时间点及时间段跨度,进行百分比绝对定位;

时间线绘制:利用模板,动态添加dom元素;

js实现过程:插件化,便于移植、复用和维护。无奈当前水平首先,封装的不好,以后要多看看别人源码,学习模块化,面向对象js编程了。个人封装js逻辑如下:

//时间线刷新定时器
var timeLineTimer=null;
//当前时间线渲染数据集,用来控制定时器中时间线是否需要刷新
var currentData="";
// 时间线类
function OwnTimeLine (arg) {
    var $that=this;
    //告警时间线主体参数
    var timeLineArg={"entityName":"告警描述信息","alarmCount":"0条告警","okNum":0,"infoCount":0,
        "warningCount":0,"errorCount":0,"minTime":new Date(),"maxTime":new Date(),"alarms":[]};
    //告警时间线参数(示例)
    var timeParam={"timelines":[{"beginPriorityColor":OwnTimeLine.alarmlevel[1],"endPriorityColor":OwnTimeLine.alarmlevel[0],
        "beginTime":"2016/4/7 10:00:","endTime":"2016/4/7 10:10"}],"alarmName":"Test"};
    if(arg==null||arg==undefined){
        arg=timeLineArg;
    }
    //主告警名称
    this.entityName=arg.entityName;
    //告警总数
    this.alarmCount=arg.alarmCount;
    //正常告警数量
    this.okNum=arg.okNum==null?0:arg.okNum;
    //提示告警数量
    this.infoCount=arg.infoCount==null?0:arg.infoCount;
    //警告告警数量
    this.warningCount=arg.warningCount==null?0:arg.warningCount;
    //验证告警数量
    this.errorCount=arg.errorCount==null?0:arg.errorCount;
    // 时间轴开始时间
    this.minTime=arg.minTime==null?new Date():arg.minTime;
    // 最大结束时间
    this.maxTime=arg.maxTime==null?new Date():arg.maxTime;
    // 时间线跨度(分钟为单位)
    this.timeLineWidthMins=60;
    //初始化时间线对象
    this.initAll();
    //初始化时间线
    if(arg.alarms!=null&&arg.alarms.length>0){
        $.each(arg.alarms,function(index,item){
            $that.appendTimeArr(item);
        });
    }
}

// 渲染子告警及其时间线数据
OwnTimeLine.prototype.appendTimeArr = function (param) {
    $that=this;
    if(param.timelines!=null && param.timelines.length>0){
        //console.log(JSON.stringify(param.timelines));
        if(OwnTimeLine.currentTimeNo>OwnTimeLine.timeTotal){
            this.appAlarmDom();
            OwnTimeL
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Blender是一款功能强大的开源3D创作软件,它内置了复杂的动画系统,包括骨骼绑定和关键帧动画。Blender中的骨骼插件主要用于增强角色动画的功能,如创建、编辑和操纵角色的骨骼结构,以及将骨骼与3D模型关联起来。 Blender的骨骼系统主要包含以下几个方面: 1. **Armature(骨架)**:这是Blender中用于创建骨骼结构的基础,由多个关节或骨组成,可以自由地移动和变形。 2. **Bones(骨头)**:每个关节就是一根骨头,可以设置长度、方向和旋转限制,用于定义物体的运动路径。 3. **IK(Inverse Kinematics,反向动力学)**:帮助你在不精确控制每一个关节的情况下,让角色执行特定的动作。 4. **Constraints(约束)**:允许你在不改变骨骼本身位置的情况下,对骨骼进行限制或响应其他元素。 5. **Skinning(蒙皮)**:将骨骼绑定到3D模型上,确保角色动作时模型部分跟随骨骼的运动。 6. **NLA(Non-Linear Animation,非线性动画)**:用于组织和管理多个动画序列,方便在时间线上调整和混合。 如果你对某个特定的骨骼插件感兴趣,例如Custom Pose Library(自定义姿势库)、Motion Capture(动作捕捉)支持或者其他高级工具,Blender的扩展仓库(Add-ons)中有许多第三方开发的插件可供选择,这些插件可能提供更专业的骨骼管理和动画编辑功能。 **相关问题--:** 1. Blender中如何创建和管理骨骼? 2. 插件如何增强Blender的骨骼功能? 3. 有没有适合初学者使用的骨骼绑定教程? 4. Blender的哪个版本开始支持第三方骨骼插件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值