首页 | 互联网 | IT动态 | 网络设备 | 服务器 | IDC | 安全 | Cisco | Windows | Linux | Java | .Net | Oracle | CIW | 华为 | 专题
IT技术 | 网页设计 | 平面设计 | 电子书下载 | 教学视频 | 方案 | 数字网校 | 直播室 | 虚拟考场 | 面授培训 | 搜索 | 博客 | 沙龙 | 论坛
 Dreamweaver | Flash
 Fireworks  | Frontpage
 HTML/CSS  | Javascript
 Photoshop  | CorelDraw
 AuotoCAD   | Illustrator
 Freehand
 3DMax    | Authorware
 Director   | Maya
 PP点点通 | 迅雷 | BT
 eMule | FlashGet | Nero
 Ghost | Outlook | IE
 Maxthon | Office
 QQ | MSN | 网易泡泡
 Skype | 雅虎通 | 新浪UC

最新文章

您现在的位置: 中国IT实验室 >> 网页设计 >> Flash >> Flash制作实例 >> 文章正文


Flash中定点移动的解决方案分析


中国设计秀www.cnwebshow.com  2007-10-29  佚名  保存本文  推荐给好友  收藏本站


◆ 网页平面多媒体培训、认证考试免费咨询热线:400-700-5807   进入网络咨询平台

  Flash中的定点移动是指某个物体移动到指定的地点这样一个常规的动作。看似简单,但他所涉及的因素还是比较多的,如:总路程、速度、路面光滑程度以及物体内在性质等等。由于我们是用Flash来实现这种定点移动,在这可视的动画制作工具面前我们就不用考虑那么多了。

  今天我主要是说说利用鼠标指定地点后影片就从原点移动到指定点这样的一个动画实例。这个实例主要是以AS脚本来实现,虽然是比较简单,但我会以三种不同的实现方法来实现,这三种方法分别是:累积路径法、剩余路径法和移动次数法(这些名字是自己取的)。为了节省事件和降低难度,我这里主要是实现水平方向的定点移动,并且是匀速运动。

  在讲各种方法之前我先讲一下此实例的组成结构。结构非常简单,整个主场景就只有一个名字为obj的影片剪辑对象,当然剩下的工作就是要写脚本来实现。

  一、累积路径法

  顾名思义,就是物体每次移动的距离我们把他累积起来,然后通过对比总路径长度来判断是否已经到达目的地的方法。

  我们先来看看实现的脚本:

var mouseListener:Object=new Object();
var totalLength:Number=0;
var pileLength:Number=0;
var speed:Number=5; //匀速运动,此是定值。
mouseListener.onMouseDown=function(){
       _root.totalLength=obj._x-_root._xmouse;
       _root.onEnterFrame=function(){
              if(_root.pileLength+_root.speed<=Math.abs(_root.totalLength)){
                     if(_root.totalLength<0){
                            obj._x+=_root.speed;
                     }else{
                            obj._x-=_root.speed;
                     }
                     _root.pileLength+=_root.speed;
              }else{
                     if(_root.totalLength<0){
                            obj._x+=Math.abs(_root.totalLength)-_root.pileLength;
                     }else{
                            obj._x-=Math.abs(_root.totalLength)-_root.pileLength;
                     }
                     _root.pileLength=0;
                     _root.totalLength=0;
                     delete _root.onEnterFrame;
              }
       }
}
Mouse.addListener(mouseListener);



      从上面的源码中的Mouse.addListener(mouseListener);可以看到我们注册了鼠标的按下侦听事件。每次鼠标点下去的时候,我们的侦听事件就会给触发。这侦听事件里面我们求出了obj对象离指定点的总路径totalLength。之后我们给主场景赋予了onEnterFrame事件,然obj对象移动到指定位置。从代码上来看我们可以看到变量pileLength是充当累积路径用的,每当obj移动一个步长,那么pileLength就累积起一个步长的长度。有人可能会不大清楚if(_root.pileLength+_root.speed<Math.abs(_root.totalLength))这句代码的意思,其实这是当obj接近目的点并且在下一次移动就到达目的点的时候,如果剩余的距离不够一个步长那么就走完剩余的距离即可。也就是else分支的代码,最后我们还要将pileLength复位和删除掉onEnterFrame事件,以便为下一次移动作准备。这就是累积路径法,下面我来说一下剩余路径法是如何解决这个问题的。

[1] [2] [3] 下一页  

【责编:Luzi】


 相关文章  推荐文章
Flash制作神奇的互动橡皮刷实例
Flash8模糊滤镜绘制逼真青翠竹林
用Flash AS代码制作美丽光影变幻动画
Flash制作光晕变幻动画特效
Flash制作花丛中的小蜜蜂卡通动画
Flash中有关层的深度处理的常用函数
Flash场景中影片剪辑的修改小技巧
用Flash AS行代码画一棵漂亮的树
软件聚宝盆 非专业也可做出好Flash
用Flash打造简单的下雪动画
  文章评论