全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS高级运动实例分析

本文实例分析了JS高级运动。分享给大家供大家参考,具体如下:

一、链式运动框架

1.他需要一个回调函数,在运动停止时,开始下一次运动(执行函数)

多物体运动框架改为如下:

function startMove(obj,attr,iTarget,fn){
...
  if(iCur==iTarget){
    clearInterval(obj.timer);
    fn();
  }...
};

然后就可以用它,比如先变宽再变高最后变透明度

startMove(this,'width',300,function(){
  startMove(this,'height',300,function(){
    startMove(this,'opacity',100);
  });
});

二、完美运动框架

1.原本多物体运动框架的缺陷

比如要让他宽度高度同时变300,这样写:

startMove(this,'width',300);
startMove(this,'height',300);

问题:只有高度变300了(因为宽度准备运动时会开一个定时器,这个定时器还没开始运动前,执行高度变化的运动,就把之前的定时器关了)

2.for in

for(i=0;i<=arr.length;i++)和for(i in arr)效果一样

①什么时候用for什么时候用for...in呢?

数组:两个都可以用   Json:只能用for...in(因为Json下标没有规律,没有length可言)

对数组而言for...in循环不灵活,因为for循环可以从1可以从2等等任意数字开始,而for...in一循环就全部

②for in小应用

function setStyle(obj,attr,value){
  obj.style[attr]=value;
};
setStyle(oDiv,'width','300px');
setStyle(oDiv,'height','300px');
setStyle(oDiv,'background','green');

=====>

function setStyle(obj,json){
  var attr='';
  for(attr in json){
    obj.style[attr]=json[attr];
  }
};
setStyle(oDiv,{width:'300px',height:'300px',background:'green'});

③多物体运动框架改进

function startMove(obj,json,fn){
  clearInterval(obj.timer);
  obj.timer=setInterval(function(){
    for(var attr in json){
     if(attr=='opacity'){
        var iCur=parseInt(parseFloat(getStyle(obj,attr))*100);
      }
      else{
        var iCur=parseInt(getStyle(obj,attr));
      }
      var iSpeed=(json[attr]-iCur)/8;
      iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
      if(iCur==json[attr]){
        clearInterval(obj.timer);
        if(fn){
         fn();  //有传函数这个参数才执行,不然会出错
        }
      }
      else{
        if(attr=='opacity'){
          obj.style.filter='alpha(opacity:'+(iCur+iSpeed)+')';
          obj.style.opacity=(iCur+iSpeed)/100;
        }
        else{
          obj.style[attr]=iCur+iSpeed+'px'
        }
      }
    }
  },30);
};

这样还有个问题

if(iCur==json[attr]){
  clearInterval(obj.timer);
}

只要json里有任一值到达目标,计时器就停止

比如我让宽度变到103,高度变到300,那高度到不了300就停止了

解决方案

function startMove(obj,json,fn){
  clearInterval(obj.timer);
  obj.timer=setInterval(function(){
    var bStop=true;  //先定义一个值,假设所有值都到了
    for(var attr in json){
     if(attr=='opacity'){
        var iCur=parseInt(parseFloat(getStyle(obj,attr))*100);
      }
      else{
        var iCur=parseInt(getStyle(obj,attr));
      }
      var iSpeed=(json[attr]-iCur)/8;
      iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
      if(iCur!=json[attr]){
        bStop=false;    //并不是所有值都到了,就把bStop设成 false
      }
      if(attr=='opacity'){
        obj.style.filter='alpha(opacity:'+(iCur+iSpeed)+')';
        obj.style.opacity=(iCur+iSpeed)/100;
      }
      else{
        obj.style[attr]=iCur+iSpeed+'px'
      }
    }
    if(bStop){    //所有值都到了,关闭定时器
      clearInterval(obj.timer);
      if(fn){
        fn();  //有传函数这个参数才执行,不然会出错
      }
    }
  },30);
};

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript运动效果与技巧汇总》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# JS  # 运动  # JS实现多物体缓冲运动实例代码  # JS多物体 任意值 链式 缓冲运动  # javascript多物体运动实现方法分析  # Javascript 多物体运动的实现  # JavaScript缓冲运动实现方法(2则示例)  # js实现缓冲运动效果的方法  # JavaScript中的匀速运动和变速(缓冲)运动详细介绍  # JS碰撞运动实现方法详解  # JS弹性运动实现方法分析  # javascript鼠标跟随运动3种效果(眼球效果  # 苹果菜单  # 方向跟随)  # Js实现简单的小球运动特效  # JS多物体实现缓冲运动效果示例  # 什么时候  # 就把  # 链式  # 还没  # 相关内容  # 有个  # 让他  # 可以用  # 遍历  # 计时器  # 感兴趣  # 数据结构  # 给大家  # 更多关于  # 只能用  # 我让  # 用它  # 所述  # 关了  # 如要 


相关文章: 网站制作软件有哪些,制图软件有哪些?  如何在宝塔面板中修改默认建站目录?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  如何在橙子建站中快速调整背景颜色?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  再谈Python中的字符串与字符编码(推荐)  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  小建面朝正北,A点实际方位是否存在偏差?  如何在腾讯云服务器上快速搭建个人网站?  南宁网站建设制作定制,南宁网站建设可以定制吗?  贸易公司网站制作流程,出口贸易网站设计怎么做?  个人摄影网站制作流程,摄影爱好者都去什么网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  建站之星安装后如何自定义网站颜色与字体?  微信h5制作网站有哪些,免费微信H5页面制作工具?  中山网站推广排名,中山信息港登录入口?  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何彻底删除建站之星生成的Banner?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  网站好制作吗知乎,网站开发好学吗?有什么技巧?  建站主机选哪种环境更利于SEO优化?  制作网站的软件免费下载,免费制作app哪个平台好?  宁波自助建站系统如何快速打造专业企业网站?  建站之星如何取消后台验证码生成?  ,南京靠谱的征婚网站?  h5网站制作工具有哪些,h5页面制作工具有哪些?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  建站之星如何一键生成手机站?  如何在阿里云完成域名注册与建站?  建站主机是否等同于虚拟主机?  建站之星如何保障用户数据免受黑客入侵?  建站VPS配置与SEO优化指南:关键词排名提升策略  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  如何快速生成ASP一键建站模板并优化安全性?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何基于云服务器快速搭建网站及云盘系统?  建站之星安装步骤有哪些常见问题?  如何用搬瓦工VPS快速搭建个人网站?  独立制作一个网站多少钱,建立网站需要花多少钱?  建站主机如何选?高性价比方案全解析  如何选择适配移动端的WAP自助建站平台?  如何快速启动建站代理加盟业务?  建站主机选择指南:服务器配置与SEO优化实战技巧  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何在服务器上配置二级域名建站?  如何零成本快速生成个人自助网站?  Swift中swift中的switch 语句  七夕网站制作视频,七夕大促活动怎么报名? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。