一个动态控制动画播放速度的技巧
2008-04-02 10:37:01来源:互联网 阅读 ()
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观看。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 流动的水面效果
下一篇: FlashMXpro的历史面板
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash