如果你注意到了脚本的顶部,在那里有一个特殊的标签告诉浏览器该用何种样式呈现特性和包含组件的方法,以及将这一组件添加到哪些事件中。这些事件都是标准的HTML事件。
当组件(在装载事件中)初始化时,它获得一个uniqueID,将其包含的母体记录在一个数字变量中,并为进程计算设定缺省值。当你逐句通过这一对象的目标处理器时,你会看到每当用户点击对象时--- element_onmousedown()---一些变量进行了初始化。下一步,用户应该将对象拖动到另一个位置。
当用户在屏幕上拖动对象时— element_onmousemove() —对象的位置发生改变,以与鼠标的运动相匹配。然后,用户应该释放鼠标按钮,让对象自行移动。
当用户释放鼠标按钮— element_onmouseup() —或是鼠标脱离了对象区域— element_onmouseout() —时,释放点即被记录下来,并对用户点击对象到释放对象的时间进行计算,对象则获得永恒运动。通过计算得出点击起始点与释放终止点的斜度,这个斜度成为对象新的移动路径。通过对象移动的距离与拖动时间可计算出用户拖动对象的速度。这个速度再又用来建立对象的移动方式。最终,速度的倒数被用来建立对象位置更新的时间间隔。
在间隔中断事件— moveMe() —中,对象的上升(rise)与运动(run)将方向斜度转换成计算的运动路径。将较大的方向改变与较小的方向改变区分开来,我们就可以做到这点。结果是,其中一个方向改变总是1,而另一个则小于1。在每次中断中,两个方向改变中较大的一个由一个向量单元增加,可能是-2或是2个像素。另一个则增加较小方向改变的两倍(即,如果上升为2而运动为1的话,那么上升将增加1 *向量而运动每次增加.5 * 2单元)。如果较小的改变增量超过向量单元(-2或2)的话,
如果对象的新位置位于限定元素之外,向量则发生改变以与之相匹配。这种方法将对象“反弹”到限定元素之外。
表B是含有这些组件的HTML页面。
表 B
评论加载中…
![]() |