注册
 找回密码
 注册
江西广告网
查看: 384|回复: 0
打印 上一主题 下一主题

flash鼠标特效精选实例(1)

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2007-4-26 22:42:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  第一节:3d鼠标跟随   该实例实现的是一3d小球随“鼠标”跟随效果,在制作过程中主要使用了自定义函数进行影片控制,大量使用了循环语句和赋值语句。影片最终播放效果如图1.1所示: 图1.1 影片最终效果   1.新建一影片,通过属性面板设置其大小为600pxx450px(单位为象素)背景色为#000000。   2.新建一影片剪辑“sphere”,选取“椭圆工具”,在工作区中绘制一椭圆,并去掉其轮廓。打开“混色器”面板进行如图1.2所示的设置: 图1.2 设置“混色器”面板   3.应用上面设置的填充色填充绘制的圆,并通过“填充渐变”工具设置其光线注入点效果使之给人一种很强的立体感,效果如图1.3所示: 图1.3 制作“sphere”   4.新建一影片剪辑“coursor”用线条工具在工作区中绘制如图1.4所示的鼠标图案,并设置其填充色为白色,并去除其轮廓线: 图1.4 鼠标制作   5.新建一影片剪辑“animation”,将默认图层命名为“animation”,“ animation”只有一个图层,同时只有四帧。下面将分别为这四个关键帧进行相应设置 选中第1关键帧,添加如下actionscript脚本代码: // creazione della classe puntospaziale function puntospaziale (x, y, z, target) { // propriet? this.target = target; this.x = x; this.y = y; this.z = z; this.firstx = x; this.firsty = y; this.firstz = z; this.dfowa = 100; // distance from object world axes this.dfpp = 200; // distance from proiection plain this.screencenter_x = 300; this.screencenter_y = 200; this.speed2dx = 0; this.speed2dy = 0; // metodi this.coord2drelativeto = coord2drelativeto; this.coord3drelativeto = coord3drelativeto; this.rotate = rotate; this.scale = scale; this.uscale = uscale; this.traslate = traslate; this.proiection_y = proiection_y; this.proiection_x = proiection_x; this.drawpoint = drawpoint; // funzioni che definiscono i metodi function coord3drelativeto (x1, y1, z1) { // cambio di coordinate 3d in riferimento ad un'altro punto this.x -= x1; this.y -= y2; this.z -= z3; } function coord2drelativeto (x, y) { // cambio di coordinate "d di proiezione in riferimento ad un'altro punto // per esempio si pu?usare per centrare il punto (0,0) al centro dello schermo // ( in tal caso passare come parametri le coordinate di tale centro ) this.screencenter_x = x; this.screencenter_y = y; } function rotate (teta_x, teta_y, teta_z) { // rotazione intorno agli assi x, y e z espressa in radianti if (teta_x != 0) { ytemp = this.y; this.y = this.y*math.cos(teta_x)-this.z*math.sin(teta_x); this.z = ytemp*math.sin(teta_x)+this.z*math.cos(teta_x); } if (teta_y != 0) { xtemp = this.x; this.x = this.x*math.cos(teta_y)+this.z*math.sin(teta_y); this.z = this.z*math.cos(teta_y)-xtemp*math.sin(teta_y); } if (teta_z != 0) { xtemp = this.x; this.x = this.x*math.cos(teta_z)-this.y*math.sin(teta_z); this.y = this.y*math.cos(teta_z)+xtemp*math.sin(teta_z); } } function scale (sx, sy, sz) { // scalamento non uniforme this.x *= sx; this.y *= sy; this.z *= sx; } function uscale (s) { // scalamento uniforme this.x *= s; this.y *= s; this.z *= s; } function traslate (a, b, c) { // traslazione this.x += a; this.y += b; this.z += c; } function drawpoint (i) { // caratterrizza il nome e la profondit?dell'istanza duplicata duplicatemovieclip (this.target, "punto"+i, i); mymovieclip = eval("punto"+i); setproperty ("punto"+i, _x, this.proiection_x()); setproperty ("punto"+i, _y, this.proiection_y()); setproperty ("punto"+i, _xscale, (100/(((this.z+this.dfowa)/this.dfpp)+1))); setproperty ("punto"+i, _yscale, (100/(((this.z+this.dfowa)/this.dfpp)+1))); mycolor = new color(eval("punto"+i)); mycolortransform = new object(); s = (this.z+50)/1; mycolortransform = {ra:'100', rb:-s, ga:'100', gb:-s, ba:'100', bb:-s, aa:'100', ab:'0'}; mycolor.settransform(mycolortransform); } function proiection_x () { // coordinata x della proiezione this.proiectionx = (this.x/(((this.z+this.dfowa)/this.dfpp)+1)+this.screencenter_x); return (this.x/(((this.z+this.dfowa)/this.dfpp)+1)+this.screencenter_x); } function proiection_y () { // coordinata y della proiezione this.proiectiony = (this.y/(((this.z+this.dfowa)/this.dfpp)+1)+this.screencenter_y); return (this.y/(((this.z+this.dfowa)/this.dfpp)+1)+this.screencenter_y); } } // funzione che prende un array di valori numerici e restituisce un // array delle stesse dimensioni contenente nella prima posizione // il numero ordinele che indica a che posto ?il primo elemento // dell'array input quanto a grandezza // per esempio se il primo elemento ?il pi?grande allora nell'array // restituito avr?1 nella prima pos. se ?il quarto pi?grande avr? // 4 etc..... // nel caso di due elementi coincidenti l'indice relativo sar?comunque diverso secondo un criterio casuale function ordindex (inputarray) { len = inputarray.length; for (var e = 0; e inputarray[e] = inputarray[e]+math.random()/100000000; } index = new array(len); for (var i = 0; i var count = 0; for (var j = 0; j if (inputarray<=inputarray[j]) { count++; } } index = count; } return index; }   选中第2关键帧,添加如下actionscript脚本代码: xrotation = 0; yrotation = 0; xposition = 0; yposition = 0; depth = 0; var miopunto1 = new puntospaziale(0, -25, 50, "point"); var miopunto2 = new puntospaziale(-43.3, -25, -25, "point"); var miopunto3 = new puntospaziale(43.3, -25, -25, "point"); var miopunto4 = new puntospaziale(0, 43.3, 0, "point"); var miopunto5 = new puntospaziale(0, 0, 0, "cursor"); mouse.hide();   选中第3关键帧,从库面板中将“sphere”和“coursor”插入工作区中,创建相应的实例,并分别为其实例命名为“point”和“sphere”,为第3关键帧添加如下actionscript 脚本:   xrotation = 0.05-(yposition-_ymouse)/400-xrotation/5; yrotation = (xposition-_xmouse)/400-xrotation/5+0.05; zrotation = 0.05; for (var i = 1; i<5; i++) { eval("miopunto"+i).rotate(xrotation, yrotation, zrotation); eval("miopunto"+i).speed2dx += (_xmouse-eval("miopunto"+i).screencenter_x)/100-eval("miopunto"+i).speed2dx/10; eval("miopunto"+i).speed2dy += (_ymouse-eval("miopunto"+i).screencenter_y)/100-eval("miopunto"+i).speed2dy/10; xposition += eval("miopunto"+i).speed2dx; yposition += eval("miopunto"+i).speed2dy; eval("miopunto"+i).coord2drelativeto(xposition, yposition); } miopunto5.x = _xmouse*1.5-450; miopunto5.y = _ymouse*1.5-300; deptharray = new array(5); for (var k = 1; k<=5; k++) { deptharray[k-1] = eval("miopunto"+k).z; } indexdepht = ordindex(deptharray); for (var f = 1; f<=5; f++) { eval("miopunto"+f).drawpoint(indexdepht[f-1]); }   选中第4关键帧,添加如下actionscript脚本代码:   gotoandplay(3);   6.返回主场景并将默认图层更名为“电影剪辑”,将“animation”插入工作区中,将建一图层“背景”,作矩形工具绘制一矩形,使其将整个工作区复盖,通过“混色器”面板将设置其填充色如图1.5所示: 图1.5 图设置填充色   通过填充渐变设置其填充效果如图1.6所示: 图1.6 设置填充渐变效果   7.这样整个鼠控效果就制作完成,保存作品,按“ctrl enter”预览最终效果。 -------------------------------------- http://www.huoyue.com.cn 活跃网,活跃人群的论坛,访问活跃网,将给您带来意想不到的收获,还可以免费为您开论坛,让您免费拥有与朋友、网友交流的论坛。你是年轻人吗?你活跃你就上!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表