Flash的播放速的制做

王朝other·作者佚名  2006-11-24
宽屏版  字体: |||超大  

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

首先做一段箭头转动的动画,尽量的将帧设得多些,比如我的就设得有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观看。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有