平滑滚动原理及实例

2008-04-02 10:34:30来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  ShowS 平滑上下滚动条(版权规flashk.org任何):

  技术资料:

  


  

如何使用:

  电影剪辑scrollMC的onLoad事件:

  showHeight = 350;

  myHeight = 350;

  speed = 13;

  targetMovie = "show.testMC";

  

showHeight用来指定绑定的MC的显示高度,myHeight指定滚动条本身的高度。speed是滑动的速度,其值越大,滑动越慢。targetMovie指定绑定的MC的路径(相对)。

  

技术内幕:

  主要的ActionScript集中在一个空的电影剪辑中:onClipEvent (enterFrame) {

   mcMoved();

  }

  onClipEvent (load) {

   a = eval("_parent._parent." _parent.targetMovie);

   function mcMoved() {

   whereY = -(a._height-_parent.showHeight)*(_parent.dragMC._y/(_parent.myHeight-38));

   var tempK = whereY-a._y;

   if (Math.abs(tempK)>1) {

   a._y = tempK/_parent.speed;

   nowY = _parent.dragMC._y;

   }

   }

  }

  a = eval("_parent._parent." _parent.targetMovie); 用来将指定绑定的MC位置。以后就能够使用a._x、a._alpha来访问这个电影剪辑了,和此相类似的技术更有_parent["myMC"]。

  whereY = -(a._height-_parent.showHeight)*(_parent.dragMC._y/(_parent.myHeight-38));主要用来计算绑定的MC应该滚动到的位置。

  var tempK = whereY-a._y;

  if (Math.abs(tempK)>1) {

   a._y = tempK/_parent.speed;

   nowY = _parent.dragMC._y;

  }

  这个比较重要,直接关系到对CPU的占用率。首先,if (Math.abs(tempK)>1)判断当前要滚动到的位置是否离当前位置有一个像素的差值。Math.abs()是计算绝对值的函数。假如不是,即已滚动到了应该到达的位置,则不进行帧的重绘。(Flash绘制一个帧的图像要耗相当的CPU,事实上,CPU的大部份使用都花在显示上面。AS的执行只要很少的CPU,所以,进行必要的判断,去掉不必要的重新绘制。能够有效地降低CPU的使用率。至少在鼠标没有重新进行交互时能够很好地降低CPU的使用率)。假如其值大于1,则将绑定的MC位置重新计算。

  a._y = tempK/_parent.speed;是个很经常用的滑动公式,其实真正的公式是这样的:a._y = (whereY-a._y)/_parent.speed 这里只是在上一步进行了简化。

  function goArea(a) {

   dragMC._y = (showHeight-38)*a;

  }

  

函数对应三个按钮“滚动到1/3、滚动到1/2、滚动到2/3、”其原理想想应该不难明白。



标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 关于动画的一些杂文

下一篇: FLASHWEB制作实例讲解(帧标签的使用)