42 12
发新话题
打印

鼠标跟随产效果集

鼠标跟随产效果集

我这里给出8个效果,可以归纳为两类:

一、用MC自身的动画实现效果的演变

舞台上放一个影片剪辑,实例名为mc
核心代码如下:(放在mc上)
//声名变量,为AS2.0而加
onClipEvent (load) {
 var i=1;
}
//跟随鼠标
onClipEvent (mouseMove) {
 _root.mc._x = _root._xmouse;
 _root.mc._y = _root._ymouse;
 updateAfterEvent(mouseMove);
}
//复制mc
onClipEvent (enterFrame) {
 if (i++>12) {
  i = 1;
 }
 duplicateMovieClip(this, "_root.mc"+i, i);
 _root.mc._visible=0;
}

附件

鼠标跟随1(文字).fla (75 KB)

2006-2-18 18:46, 下载次数: 2655

鼠标跟随2(帘子).swf (4.55 KB)

2006-2-18 18:47, 下载次数: 2063

鼠标跟随2(帘子).fla (71 KB)

2006-2-18 18:47, 下载次数: 1348

鼠标跟随1(文字).swf (4.04 KB)

2006-2-18 18:46, 下载次数: 1577

鼠标跟随3(波纹).swf (662 Bytes)

2006-2-18 18:48, 下载次数: 1808

鼠标跟随3(波纹).fla (73 KB)

2006-2-18 18:48, 下载次数: 1569

TOP

Re:鼠标跟随产效果集

二、用AS控制MC的坐标来实现

在舞台上放个MC,可以做点动画效果
写如下代码:(旋转的星星)
//定义常数
var i = 36;//复制夹子的总数
var n = 12;//一圈内的夹子数
var r = 2;// 跟随快慢的系数
//复制MC
for (var cnt = 1; cnt<=i; cnt++) {
 star.duplicateMovieClip("star"+cnt, cnt);
 this["star"+cnt]._rotation = 360-(360/n)*cnt;
 this["star"+cnt]._alpha = 100-(100/i)*cnt;
}
//隐藏原来的MC
_root.star._visible = false;
startDrag ("star1", true);
//跟随效果关键的代码
star.onEnterFrame = function() {
 for (cnt=2; cnt<=i; cnt++) {
  _root["star"+cnt]._x = _root["star"+cnt]._x+(_root["star"+(cnt-1)]._x-_root["star"+cnt]._x)/r;
  _root["star"+cnt]._y = _root["star"+cnt]._y+(_root["star"+(cnt-1)]._y-_root["star"+cnt]._y)/r;
 }
}

TOP

Re:鼠标跟随产效果集

再来一个非常简单:
舞台上的影片剪辑实例名依次为mc1、mc2、……mc17,各个MC的注册中心要重合。
代码写在舞台第一帧:

var r = 3;// 跟随快慢的系数
startDrag ("mc1", true);
_root.onEnterFrame = function() {
 for (cnt=2; cnt<=17; cnt++) {//这个17要跟据你的MC个数来定
  _root["mc"+cnt]._x = _root["mc"+cnt]._x+(_root["mc"+(cnt-1)]._x-_root["mc"+cnt]._x)/r;
  _root["mc"+cnt]._y = _root["mc"+cnt]._y+(_root["mc"+(cnt-1)]._y-_root["mc"+cnt]._y)/r;
 }
}

TOP

Re:鼠标跟随产效果集

改进一下:
增加了偏移量,使跟随的MC可以控制它的放向。

var i = 20;//复制夹子的总数
var r = 3;// 跟随快慢的系数
var vx=5;//偏移量,可取负值
var vy=8;
for (var cnt = 1; cnt<=i; cnt++) {
 mc.duplicateMovieClip("mc"+cnt, cnt);
 this["mc"+cnt]._rotation = 360-(360/n)*cnt;
 this["mc"+cnt]._alpha = 100-(100/i)*cnt;
}
_root.mc._visible = false;
startDrag ("mc1", true);
mc.onEnterFrame = function() {
 for (cnt=2; cnt<=i; cnt++) {
  _root["mc"+cnt]._x = _root["mc"+cnt]._x+(_root["mc"+(cnt-1)]._x-_root["mc"+cnt]._x+vx)/r;
  _root["mc"+cnt]._y = _root["mc"+cnt]._y+(_root["mc"+(cnt-1)]._y-_root["mc"+cnt]._y+vy)/r;
 }
}

TOP

Re:鼠标跟随产效果集

这个增加了放向跟随,MC随鼠标移动转动放向。

这个效果中各个MC的制作和位置随意,跟随后会保持“队列”形态不变!

var r = 3;// 跟随快慢的系数
//数组记录MC初始位置
var mcx = new Array(12);
var mcy = new Array(12);
for (cnt=0; cnt<=11; cnt++) {
 mcx[cnt] = _root["mc"+cnt]._x;
 mcy[cnt] = _root["mc"+cnt]._y;
}
var mcrx=mcx[0];
var mcry=mcy[0];
_root.onEnterFrame = function() {
 _root.mc0._rotation=Math.atan2((_root.mcry-_root._ymouse),(_root.mcrx-_root._xmouse))*180/Math.PI;
 _root.mc0._x=_root._xmouse;
 _root.mc0._y=_root._ymouse;
 for (cnt=1; cnt<=11; cnt++) {
  _root["mc"+cnt]._x = _root["mc"+cnt]._x+(_root["mc"+(cnt-1)]._x+(_root.mcx[cnt]-_root.mcx[cnt-1])-_root["mc"+cnt]._x)/r;
  _root["mc"+cnt]._y = _root["mc"+cnt]._y+(_root["mc"+(cnt-1)]._y+(_root.mcy[cnt]-_root.mcy[cnt-1])-_root["mc"+cnt]._y)/r;
  _root["mc"+cnt]._rotation = _root["mc"+cnt]._rotation+(_root["mc"+(cnt-1)]._rotation-_root["mc"+cnt]._rotation)/2;
 }
 _root.mcrx=_root._xmouse;
 _root.mcry=_root._ymouse;
};

TOP

Re:鼠标跟随产效果集

这个是纯AS的效果,这是转载的别人的代码:

直接复制下面代码到第一帧就可以测试了。

//创建影片剪辑
createEmptyMovieClip("d0",0);
with(d0){
lineStyle(0);
moveTo(6,0);
for(var i=0;i<2*Math.PI;i+=Math.PI/180){
lineTo(6*Math.cos(i),6*Math.sin(i));
}
}
//复制影片剪辑
for(var i=1;i<36;i++){
d0.duplicateMovieClip("d"+i,i);
}
//创建空数组,用于设定颜色
r=new Array();
g=new Array();
b=new Array();
clr=new Array();
//进入帧
onEnterFrame=function(){
for(var i=0;i<36;i++){
//为数组元素赋值
r=Math.random()*255;
g=Math.random()*255;
b=Math.random()*255;
clr=r<<16|g<<8|b;
//设定影片剪辑的颜色
myClr=new Color(eval("d"+i));
myClr.setRGB(clr);
//创建鼠标跟随效果
var gold=(Math.sqrt(5,2)-1)/1.6;//跟随速度
d0._x+=(_root._xmouse-d0._x)*gold;
d0._y+=(_root._ymouse-d0._y)*gold;
eval("d"+i)._x+=(eval("d"+(i-1))._x-eval("d"+i)._x)*gold;
eval("d"+i)._y+=(eval("d"+(i-1))._y-eval("d"+i)._y)*gold;
//检测影片剪辑是否与鼠标接触,若接触则逐渐变透明
if(eval("d"+i).hitTest(_root._xmouse,_root,_ymouse,false)){
eval("d"+i)._alpha-=100*(1-gold);
}else{
eval("d"+i)._alpha=100*gold;
}
}
}

TOP

Re:鼠标跟随产效果集

好东西,顶!!!

TOP

Re:鼠标跟随产效果集

up

TOP

Re:鼠标跟随产效果集

收了!

TOP

Re:鼠标跟随产效果集

快给加分!~

TOP

Re:鼠标跟随产效果集

好东西狂顶~~
能不能做个跟随轨迹是桃心形的呀
我想会很好看

TOP

Re:鼠标跟随产效果集

厉害,一直都想试试鼠标的AS

TOP

Re:鼠标跟随产效果集

太厉害了啊 收 下来研究!!!

TOP

Re:鼠标跟随产效果集

谢谢共享!

TOP

Re:鼠标跟随产效果集

呵呵!全没收

TOP

Re:鼠标跟随产效果集

还是不大懂郁闷啊

TOP

Re:鼠标跟随产效果集

谢谢了,我一直都是用那个eval,可是不知怎么回事它好像不能用player7播放。 请问斑竹知道吗??

TOP

Re:鼠标跟随产效果集

请问高手们:当点击按时关闭第一场景,进入第二场景的action怎么写

TOP

Re:鼠标跟随产效果集

确实是好东西啊!辛苦了!天下闪客是一家!呵呵

TOP

Re:鼠标跟随产效果集

好东西呀,我看到这个,今天就吃饱了。

TOP

不错的说◎
人是贱骨头,至少我是!

TOP

Flash: http://b28.blogbus.com/files/1154512114.swf

[ 本帖最后由 flashb 于 2006-8-2 12:24 编辑 ]

TOP

好东西 赶紧藏下

TOP

哇好铁啊
本工作室承接以下业务:电子杂志、各种动画制作、全站flash、网站建设、画册、各类贺卡等业务  有意请联系

TOP

可惜,好多的附件不见了,不知管理员升级时怎么搞的!
向大家学习!

TOP

牛B..下来研究下....

TOP

.....

路过,我看不懂不过顶下...

TOP

好贴。学习中。

TOP

回复 #1 ybzjllj 的帖子

好贴!  支持!望楼主继续!呵呵

TOP

一直想学,就是看不懂代码到底在说些什么,呵呵
淘宝店铺http://shop33154290.taobao.com/
大家来捧捧场哦:)

TOP

 42 12
发新话题