| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
flash运动缓冲效果简析
作者:佚名    文章来源:网络    点击数:    更新时间:2006-11-30
 

前不久又逛了一些flash做的网站,看到有的网站导航菜单的效果确实不错,即萌发了尝试写一些关于这方面的一系列教程。菜单的表现方式可以说是千姿百态,充满个性,但透过现象看本质,其技术的核心却有着相通或相似之处,比如今天所要讲的运动的缓冲效果,其在这方面的运用是非常的多,当然,一个好的导航菜单决不仅仅只是运动缓冲的效果,它还包括很多方面,比如创意。今天所写的东西其实并没有多大的技术含量,都是很基本的东西,但是如果你真正掌握了一些基本的知识,那么你才有可能发挥自己的聪明才智去设计一些更酷炫的东西,而不仅仅是简单的把别人的代码copy到自己的作品之中,或者改改别人的原文件就用,这对你的学习并没有什么好处,如果你同意我的观点,那么请接着看下去..... 
  正题: 
  主场景中只有一帧、一个MC(MovieClip),如果我要的效果是点一下鼠标,MC就出现在鼠标所点击的位置,该如何实现呢。通常我们可以给MC加这样的代码: 
  onClipEvent(load){ 
  _x=300; 
  _y=200; 
  } 
  //设置MC的初始坐标,如果不需要设置以上代码可省。此代码(↑)只运行一次。 
  onClipEvent(mouseDown){ 
  targetx=_root._xmouse; 
  targety=_root._ymouse; 
  } 
  //鼠标按下,把其坐标分别赋值给两个变量:targetx、targety 
  onClipEvent(enterFrame){ 
  _x=targetx; 
  _y=targety; 
  } 
  //把targetx、targety的值分别赋值给MC的_x   _y 
  //〖当然你也可以这样写: 
 onClipEvent(load){ 
 <BR> _x=300; 
 <BR> _y=200; 
 <BR> } 
 <BR> onClipEvent(enterFrame){ 
 <BR> if(Key.isDown(1)){//如果鼠标左键按下 
 <BR> _x=_root._xmouse; 
 <BR> _y=_root._ymouse; 
 <BR> } 
 <BR> } 
 <BR> 但为了表述方便,以下将采用第一种写法〗 
 <BR> ctrl+Enter测试一下效果,当点击鼠标左键,MC就会出现在鼠标点击的位置,但并没有出现MC的 
 <BR> 运动过程,那么,如果要出现MC的运动缓冲过程又该如何设置代码? 
 <BR> OK,我们先试着给MC加这样的代码: 
 <BR> onClipEvent(load){ 
 <BR> vx=1; 
 <BR> vy=1; 
 <BR> //你可以试着改变vx、vy的值,然后看看效果. 
 <BR> } 
 <BR> onClipEvent(enterFrame){ 
 <BR> _x+=vx;//或者_x-=vx; 
 <BR> _y+=vy;//或者_y-=vy; 
 <BR> } 
 <BR> Ctrl+Enter观看效果,我们将看到MC运动了,这是因为enterFrame 以影片帧频不断地触发此动作: 
 <BR> _x+=vx;(等效于_x=_x+vx)_y+=vy;使MC的x、y坐标不断的在原来的基础上加上vx、vy,这个你得用心体会。MC虽然运动了,但速度是恒定的,因为MC的x、y坐标每次增加的量(步长)是个定值vx、vy,如果vx、vy不是定值,那很显然MC的运动就是变速的。 
 <BR> 基于以上的思想,为了实现MC的运动缓冲过程,我们可以这样设置代码: <BR> onClipEvent(load){ 
 <BR> _x=300; 
 <BR> _y=200; 
 <BR> } 
 <BR> onClipEvent(mouseDown){ 
 <BR> targetx=_root._xmouse; 
 <BR> targety=_root._ymouse; 
 <BR> } 
 <BR> onClipEvent(enterFrame){ 
 <BR> distx=targetx-_x; 
 <BR> disty=targety-_y; 
 <BR> //算出鼠标点击的位置到MC的距离 
 <BR> movex=distx/10; 
 <BR> movey=disty/10 
 <BR> _x+=movex; 
 <BR> _y+=movey; 
 <BR> } 
 <BR> 在这里我们使用了_x+=movex;   _y+=movey;首先我们得注意 
 <BR> movex和movey并不是一个固定不变的数值,在MC的运动过程中,其x、y坐标是不断变化的,所以movex和movey也是不断变化的(movex=distx/10;movey=disty/10;而distx=targetx-_x;disty=targety-_y;)。你可以看看下面这张图(x方向)以帮助理解。

[1] [2] 下一页


相关文章