当前页面位置: » 丰搜网 » 文档中心 » 详细内容
平滑滚动原理及实例
本文由fk授权蓝色理想转载
访问fk 下载源文件(129k)
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、”其原理想想应该不难明白。
本站相关文章: 运动缓冲效果解晰
出处:flashk.org
责任编辑:qhwa
◎进入论坛flash专栏版块参加讨论
| | | 保持清晰的文档结构 | | | 月亮图腾教程ⅴ—最后一战 | | | x-sapce使用系列教程 | | | x-space安装系列教程 | | | 抽线以及虚线画法简明教程 | | | 创新设计 百万格子大楼 | | | discuz!转换系列教程 | | | 世界杯足球的32个变种 | | | 易上手简单图层样式扣图 | | | 一封写给mm学习linux的信 | | | | | | 保持清晰的文档结构 | | | 月亮图腾教程ⅴ—最后一战 | | | x-sapce使用系列教程 | | | x-space安装系列教程 | | | 抽线以及虚线画法简明教程 | | | discuz!转换系列教程 | | | 易上手简单图层样式扣图 | | | 十分钟学会 xajax | | | css 菜单举一反三 | | | 利用照片制作版画简明教程 | | | | | 蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。 特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有 | | 本文现有 5 条评论 暂时没有人参于评分 mirycat publish at 2006-2-13 16:17:05 _parent._parent._parent["targetmovie"]; 218.14.201.236 publish at 2004-3-28 17:20:15 321 61.242.97.4 publish at 2004-3-25 10:58:32 wherey = -(a._height-_parent.showheight)*(_parent.dragmc._y/(_parent.myheight-38));中,为什么要a._height-_parent.showheight???请指教
211.78.147.67 publish at 2004-3-18 13:07:23 a = eval("_parent._parent."+_parent.targetmovie);
why not 不能改成 a = _parent._parent["_parent.targetmovie"]; >__<~~ 218.18.25.162 publish at 2004-3-15 12:26:52 挺好用的。。 | | |
| 关于站点 免责声明 联系站长 版权隐私 友情链接 网站地图 京icp备05002321号 | ©1999-2006 blueidea.com. 版权所有 | |