注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

清风的博客

我为人人,人人为我。

 
 
 

日志

 
 

as鼠标跟随  

2014-01-09 15:15:21|  分类: 【鼠标特效】 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、as2

1、拉一动态文本,实例名为_txt;转为影片剪辑,实例名为_mc。
2、在帧上写如下代码:
txt_array = ["清", "风", "工", "作", "室"];
//跟随鼠标的文字定义为数组中的元素
for (j=0; j<5; j++) {
 _mc.duplicateMovieClip("_mc"+j, j+100);
 this["_mc"+j]._txt.text = txt_array[j];
 //复制影片剪辑并使动态文本中的内容为对应数组中的元素
 this["_mc"+j]._txt.autoSize = true;
 this["_mc"+j]._txt.selectable = false;
 //设置动态文本
 this["_mc"+j].vx = this["_mc"+j].vy=0;
 //初始化影片剪辑的变量vx、vy值均为0
}
onEnterFrame = function () {
 mcxy(_mc0, _xmouse, _ymouse);
 for (j=1; j<5; j++) {
  mcxy(this["_mc"+j], this["_mc"+(j-1)]._x, this["_mc"+(j-1)]._y);
 }
};
//运行每一帧时影片剪辑的坐标执行如下自定义函数
function mcxy(_mc, a, b) {
 _mc.vx += (a-_mc._x)*.5;
 _mc.vy += (b-_mc._y)*.5;
 _mc.vx *= .5;
 _mc.vy *= .5;
 _mc.vx += 4;
 _mc._x += _mc.vx;
 _mc._y += _mc.vy;
}

        知识要点:

  ① startDrag和stopDrag应用;②with 语句应用;

  鼠标拖拽也是使用比较多的特效形式,这一节我们将学习一个简单的鼠标拖拽动画。要学习以下几个新的语句:

  startDrag();动作,使目标影片剪辑在影片播放过程中可拖动。语法格式是:

  myMovieClip.startDrag(lock, left, top, right, bottom);

  myMovieClip 要拖动的影片剪辑实例名。

  Lock 是一个用true或false表示的布尔值,true指定可拖动的影片剪辑锁定到鼠标位置中央,false则为不锁定。

  left, top, right, bottom 参数是 相对于影片剪辑的父级坐标的值,可以设置这些值来指定该影片剪辑拖动的左、上、右、下的矩形范围。

  小括号中的这些参数是可选的。

  stopDrag() 停止拖动当前影片剪辑(不需要参数)

  with 语句,可以在小括号中指定对象(比如影片剪辑)作为参数,并使用大括号中的语句计算该对象中的表达式和动作。使用with语句,可以简化代码的书写。语法格式是:

  with (动作脚本对象或影片剪辑的一个实例。) {

  一个动作或一组动作。 }

  这是一个及其简单的鼠标拖拽效果,画面上一串彩色星星随着鼠标的移动而翻卷摆动,当我们点击一下右下角的按钮鼠标,星星就不再跟随着鼠标移动,而定位在了刚才点击鼠标的位置,当把鼠标滑过按钮,星星又处于被拖拽状态了。实现这个效果其实非常简单。

  看看源文件,库中有两个影片剪辑和一个按钮,xing1是一个星图形的移动渐隐补间动画,xing2中嵌套了几个分别改变了色调的xing1的实例。

  主场景上共3帧,有【按钮】、【mc】和【as】三个图层,【mc】图层上放置的是xing2影片剪辑,其实例名为“xing_mc”,【as】图层上和按钮实例上分别添加了如下语句:

  【as】图层上的语句:

  第1帧

  i = 0;

  xing_mc._visible = 0;// 设置影片剪辑不可见

  xing_mc.startDrag(true,0,0,550,400);

  //在 (0,0)至 (550,400) 的矩形范围内拖拽xing_mc影片剪辑。

  第2帧:

  i = i+1; //变量i每次加1

  if (i<=36) { //设置条件i小于或者等于36

  xin_mc.duplicateMovieClip("xin_mc"+i, i);//以新名称"xin_mc"+i,层深度为i复制影片剪辑

  with (_root["xing_mc"+i]) {//定义数组对象_root["xin_mc"+i]为with语句的参数

  _rotation = i*20; //设置新复制影片剪辑的旋转度数

  _xscale = xin_mc._xscale+i*5;//设置新复制影片剪辑的横向缩放比例

  _yscale = xin_mc._yscale+i*5;//设置新复制影片剪辑的纵向缩放比例

  }

  } else {

  i = 0; //如果不满足if语句里的条件,则i=0

  }

  第3帧

  gotoAndPlay(2);

  这段程序的流程很简单,是前面已经学习过的知识,一开始在第1帧定义变量i的初始值为0,设置场景上的影片剪辑实例不可见,并在一个矩形范围内可以由鼠标拖拽。

  第2帧先由表达式i=i+1将i的值计算为1,再按照if语句里设定的条件进行判断,符合当i的值小于或等于36条件时就执行大括号“{}”里面的语句块,复制xing_mc影片剪辑,由参数sing_mc+i计算出第1次新复制的影片剪辑名为xing_mc1,并由参数i分配其层深度为1;再由with里面的语句计算出让新复制的影片剪辑顺时针旋转20度,纵横向等比例放大5个百分点。

  第一次执行完后,再由第3帧上的语句指令播放头返回第2帧,于是再第二次进行判断并复制影片剪辑,每一次反复时i的值递增1,直至超出设定的条件后由else里面的语句将变量i重新定义为0。

  然后再重复上面的判断复制过程,如此反复。
  由于在第1帧上设置了作为复制父本的影片剪辑由鼠标拖拽,而新复制出的影片剪辑的坐标位置默认是与父本的坐标一致,所以每次新复制出的影片剪辑的坐标位置就会由当时父本影片剪辑的位置而定,这样就形成了无数彩色星星跟随着鼠标翻卷摆动的动画效果。

  第2帧出现了一个with语句,利用这个语句,将影片剪辑或其它对象的引用作为其参数,可以简化程序语句的书写,不必在大括号中的每一行语句前面重复书写对象的名称。

  如果不用with语句,要为新复制出的影片剪辑设置属性就应该写成:

  _root["xin_mc"+i]._rotation = i*20;

  _root["xin_mc"+i]._xscale = xin_mc._xscale+i*5;

  _root["xin_mc"+i]._yscale = xin_mc._yscale+i*5;

  当用with语句为相同对象设置指令时,语句行越多就越显其优势。

  执行了startDrag语句,就可以使指定的影片剪辑在动画播放过程中保持可拖动状态,一次只能拖动一个影片剪辑。直到执行 stopDrag() 停止拖动为止。或直到对其它影片剪辑调用了 startDrag() 动作为止。

  现在看看按钮上的语句:

  on (rollOver) {

  xing_mc.startDrag(true,0,0,550,400); //鼠标滑过按钮时拖拽影片剪辑

  }

  on (release) {

  stopDrag(); //点击按钮时停止拖拽当前影片剪辑

  }

  通过鼠标滑过按钮和点击鼠标,就可以切换xing_mc影片剪辑的拖拽状态。

  >>>>>点击查看动画效果<<<<<

  评论这张
 
阅读(19)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017