运动基础

示例:点击按钮,Div开始移动,当到达特定位置时,停止运动

1,运动的要素是什么 比如 position:absolute; left:0px,改变left使其运动

2,让“物体”持续性的运动,依靠什么 定时器 setInterval()

3,停止的条件是什么 比如offsetLeft==300时,停止运动 要点:关闭定时器

Bug: (1),速度不是距离倍数时,运动过界 如速度为7时,它就是301,它就继续运动下去 解决:>=300 (2),运动停止时,继续点击按钮,物体继续运动 解决:把运动和停止隔开(if/else) (3),当Div在运动过程中,继续点击按钮,速度会变快  如速度为1时,试试看 原因:每点击一次,就开了一个定时器。比如5个定时器,就相当于5倍的速度 解决:运动开始前,清空定时器 clearInterval()

--------------------------------------------------------------------

总结

运动框架原则: 1,开始运动前,关闭原来的定时器 注:对应上面第3个bug 2,把运动和停止隔开(if/else) 注:对应上面第2个bug

----------------------------------------------------------------------

示例代码:

html

<input type="button" value="开始移动" id="btn1" onclick="startMove();"  />

<div id="div1"></div>

js

var timer = null;

function startMove(){
	var oDiv = document.getElementById("div1");

	clearInterval(timer);
	timer = setInterval(function(){
		if(oDiv.offsetLeft >= 300){
			clearInterval(timer);
		} else {
			oDiv.style.left = oDiv.offsetLeft + 1 + "px";
		}
	},30);

}

运动基础

时间: 2024-08-19 08:32:13

运动基础的相关文章

JS运动基础(三) 弹性运动

加减速运动速度不断增加或减少速度减小到负值,会向反方向运动弹性运动在目标点左边,加速:在目标点右边,减速根据距离,计算加速度带摩擦力的弹性运动弹性运动+摩擦力 弹性:速度 += (目标点 - 当前值)/系数;  //6 , 7 , 8速度 *= 摩擦系数;   // 0.7 0.75终止条件距离足够近 并且 速度足够小 缓冲:var 速度 = (目标点 - 当前值)/系数;速度取整 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <me

day38—JavaScript的运动基础-匀速运动

转行学开发,代码100天--2018-04-23 一.运动基础框架 JavaScript的运动可以广义理解为渐变效果,直接移动效果等,图网页上常见的"分享到",banner,透明度变化等.其实现的基本方法就是利用前面学到的定时器. 通过学习,总结一下基本的运动实现--运动框架. 运动框架可以理解为实现元素运动的流程.比如让一个div盒子运动起来,即给其left样式加一个定时器即可. <input type="button" value="开始运动&q

第八节 JS运动基础

运动基础 让Div运动起来 速度--物体运动的快慢 运动中的Bug 不会停止 速度取某些值会无法停止 到达位置后再点击还会运动 重复点击速度加快 匀速运动(速度不变) 运动框架及应用: 运动框架: 在开始运动时,关闭已有定时器 把运动和停止隔开(if/else) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS运

Javascript运动基础

javascript的运动非常实用,通过控制需要运动块的实际距离与要到达的距离的关系,结合定时器来控制小方块的各种运动. 运动框架 <!DOCTYPE html><html><head> <title></title> <style type="text/css"> #div1{ width: 100px; height: 100px; position: absolute; top: 50px; left: 50

JS运动---运动基础(缓冲运动)

(1)手风琴效果 分析: (2)基础缓冲运动 接下来取整 原因: px为计算机识别的最小单位,1px无法再往下拆分.所以css如果取值200.5px,解析时计算机会自动将其改为200px注意:这里的数值并没有四舍五入计算,200.9px最后依然是200px 速度不能是小数,需要取整,所以接下来进行取整 因为从左到右运动和从右到左运动不一样,所以需要判断 (3)右侧悬浮框缓冲运动 <!DOCTYPE HTML> <html> <head> <meta charset

js运动基础之匀速运动

单个属性匀速运动 1 /** 2 * 单属性匀速运动 3 */ 4 function fnSingleUniformMove(oDom, sAttr, iTarget, fn){ 5 var iSpeed, iCur; 6 clearInterval(oDom.timer); // 开启定时器前先清除定时器,避免动画重复叠加 7 oDom.timer = setInterval(function(){ 8 9 // 计算当前值 10 if(sAttr == 'opacity'){ 11 iCur

js运动基础之缓冲运动

单属性缓冲运动 1 /** 2 * 单属性缓冲运动 3 */ 4 function fnSingleBufferMove(oDom, sAttr, iTarget, fn){ 5 var iSpeed, iCur; 6 clearInterval(oDom.timer); 7 oDom.timer = setInterval(function(){ 8 // 计算当前值 9 if(sAttr == 'opacity'){ 10 iCur = Math.round(fnGetStyle(oDom,

js运动基础1

1.在这个例子里面,如果在div块运动的过程中继续点击按钮的话,速度会越来越快,所以再开另一个定时器的时候要把之前的定时器给关掉.这里timer定义的位置会影响定时器是否关闭,如果把timer定义成局部变量,那么在每一次点击的时候都会是null,那么clearInterval根本起不到关定时器的作用.所以必须把定时器定义为全局变量. 2.对于speed这个变量,不用吧他放在外面,直接作为一个局部变量就好了. <!DOCTYPE html> <html> <head lang=

运动基础的一些问题及解决

一.缓冲运动:逐渐变慢 越接近终点,速度越慢 速度=(目标值-当前值)/缩放系数 iSpeed=(iTarget-oDiv.offsetLeft)/8; 1.存在Bug,速度为小数时,小数部分会被舍掉,解决: iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed); 2.目标值是小数 parseInt(t); 二.匀速运动 当最后一次运动不足以达到目标点时,解决: if(Math.abs(oDiv.offsetLeft-iTarget)<7))