您的位置: 首页 > 技术文档 > 多媒体制作 > 平滑滚动原理及实例
鼠标拖曳的时钟 回到列表 JavaScript 和 Flash 的通信
 平滑滚动原理及实例

作者:Flashk.org 时间: 2004-03-14 文档类型:原创 来自:FlashK.org

本文由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专栏版块参加讨论

作者文章
平滑滚动原理及实例
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
全兼容的纯CSS级联菜单要点浅析
CSS Sprites 图片整合技术
雅安,一场中式旅行
热烈祝贺"醒狮杯"圆满结束
菊花宝典大赏大奖教程《阳台》
交互设计师怎样和产品团队合作
Photoshop打造个性潮流音乐海报
简单解读面包屑
CSS盒模型
Apple与Microsoft网站可用性研究
栏目最新 栏目最新列表
safari 4 新特性
Photoshop制作精美高光流线字
IE下img多余5像素空白解决方法
XHTML1.0与HTML兼容指引16条
JavaScript优化细节
全兼容的纯CSS级联菜单要点浅析
CSS Sprites 图片整合技术
Photoshop打造个性潮流音乐海报
CSS盒模型
45度地图编辑器及游戏开发心得

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文现有 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
挺好用的。。
您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《Web标准设计》
《美工神话》
《Flash短片轻松学》
Illustrator CS3质感绘画表现技法
大师之路--Photoshop 完全解析
《用户体验要素》
HTML与CSS入门经典(第7版)
作品集 更多内容

胡椒下班 LogoMark Asia 毕业设计。 美女一张。 WESBROOK 02年临摹的小图 Lenovo 某软件界 Station UI