手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网页制作>Flash>列表

一个动态控制动画播放速度的技巧

来源:互联网 作者:west263.com 时间:2008-04-02
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  Flash的播放速率是在编辑时设定的,所以无法通过程式来动态控制,要达到类似的效果,只有采用一些小技巧。以下面的小动画为例,方向箭头转动的速度(由播放速度决定)随着鼠标距离的远近而发生由慢到快的转变。

  

  
  WIDTH="448" HEIGHT="44" PLAY="true" LOOP="false" MENU="true" QUALITY="high"

  AllowScriptAccess="never" TYPE="application/x-shockwave-flash"

  PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">


  首先做一段箭头转动的动画,尽量的将帧设得多些,比如我的就设得有192帧之多。帧率提高一倍,类同于每隔一帧播放一帧,其他依次类推。为此我写了一个函数:

  function playRateCtr(movie:MovieClip, rate:Number) {

   //movie :要控制播放速度的影片; rate:帧率倍数

   (rate == undefined) ? rate=1 : null;

   (movie == undefined) ? movie=this : null;

   //设定默认的 movie 和 rate 值

   var cFrame = movie._currentframe;

   var nFrame = cFrame rate;

   movie.gotoAndPlay(nFrame);

  }

  假设箭头的影片名字为:logo_part_1(是我要做的logo的一部分啦 )

  写:

  logo_part_1.onEnterFrame = function() {

   _root.playRateCtr(this,3);

  };

  那么,箭头动画就将以原来三倍的帧率播放.

  为了使鼠标位置和播放速度的倍数发生关联,又有如下函数:

  function DtoRate(movie:MovieClip, rate_max:Number, tran:Number) {

  //movie:影片名字:rate_max:可控制的速度最大倍数:tran:距离

  //转化为倍数时的单位

   (movie == undefined) ? movie=this : null;

   (rate_max == undefined) ? rate_max=3 : null;

   (tran == undefined) ? tran=50 : null;

   var dx = movie._xmouse;

   var dy = movie._ymouse;

   var dr = Math.min(rate_max, Math.floor(Math.sqrt(Math.pow(dx, 2) Math.pow(dy, 2))/tran));

   //获得鼠标和影片的距离,他是经过转换的

   return (rate_max-dr 1);

  }

  改写原来的onEnterFrame函数:

  logo_part_1.onEnterFrame = function() {

   var rate = _root.DtoRate(this,15,35);

   //trace(rate);

   _root.playRateCtr(this, rate);

  };

  接着就能够 测试啦。因为这是采用跳帧的方法实现的,具体效果要多测试几次,并调整动画的帧数,才可能得到好的效果。请使用flashplayer 7观看。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!