Flash鼠标特效精选实例(1)--3D鼠标跟随

  第一节: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[i]<=InputArray[j]) {

  count++;

  }

  }

  Index[i] = 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”预览最终效果。

时间: 2024-08-02 15:57:18

Flash鼠标特效精选实例(1)--3D鼠标跟随的相关文章

Flash鼠标特效精选实例(2)--4D鼠标

第二节:4D鼠标 该实例实现的是,模仿4D鼠标中键效果,当单击鼠标中键时,拖动鼠标可以控制文本滚动,最终效果如图2.1所示,要实现这一效果,具体步骤如下: 图2.1 模拟鼠标中键效果 1.新建一影片,通过属性面板设置其大小为400pxX300px(单位为象素)背景色为#CCCCCC. 2.新建一图开元件"txt",进入其编辑状态,将默认图层更名为"文本",在工作区中输入文本,可以任意输入,不会影响效果.再新建一图层"背景",为"文本&q

Flash趣味鼠标特效大作战

鼠标|特效 从很早的版本开始,利用Flash就可以制作很多有趣的鼠标特效,下面我们来重温一下,制作几个有趣的鼠标特效. 一.实现原理 其实鼠标特效的原理都是大同小异的,让Clip先停在某一帧上面,当鼠标滑过的时候,播放相应的特效.一个Clip看起来不怎么好看,但几十个Clip放在场景中,靠规模制胜,鼠标触发播放相应的效果,看起来就颇为壮观了. 下面我们就来实现三个不同的实例,每一个实例都代表着一种类型的鼠标特效. 二.实例1 这个实例实现的是有关线变换的鼠标特效,与线的变换有关的鼠标特效都与这个

Flash轻松实现鼠标特效

鼠标|特效 作者:虬髯客 QQ:4077130 转载请注明出处和作者! 在网上经常看到一些做得非常cool的鼠标,看起来好像很复杂.但借助于FLASH强大的脚本语言,这根本不算什么.好了,不多说,现在我们就亲手做一个. 效果演示: 点击这里下载源文件 制作步骤: 1.打开Flash,新建一个"Flash文档",并保存. 2.按"Ctrl+F8",新建一个"影片剪辑",命名为"star",如图: 3.按"Ctrl+F8

Flash鼠标特效:弹性框架的制作

鼠标|特效 在送上教程之前,我想先感谢一位经典的网友,他介绍了一个数学公式编辑软件MATHTYPE,对我这次写教程有了很大的帮助.但是是谁一时想不起来,又找不到.如果找到的话,我一定会把他的大名公布出来,以示感激. 这是两个月前答应一位网友写的教程,但是当初没有时间,所以拖到现在.而且这个效果还是有相当一部分的人曾经在论坛上问过怎么做的.现在笔者挤出了点时间,给大家送上这个教程. 这基本上是用AS实现的.主要用了MovieClip对象的lineTo和curveTo方法,此外还有很多人都很熟悉的韩

JavaScript实现文字跟随鼠标特效_javascript技巧

本文实例讲述了JavaScript如何实现文字跟随鼠标特效.分享给大家供大家参考.具体如下: 运行效果图如下: <HTML> <HEAD> <TITLE>鼠标特效--文本围绕鼠标</TITLE> </HEAD> <BODY> <br><br> <center> <font color="red"><h2>鼠标特效--文本围绕鼠标</h2><

实例详解鼠标右键菜单

菜单|鼠标|详解|右键 原创教程,转载请注明出处:网页教学网 鼠标右键菜单一直都是大家比较热门的话题,从 Flash MX 开始就已经可以自定义鼠标右键菜单了,这里就将一些相关的对象及使用方法的相关资料介绍给大家. 右键菜单控制主要使用的是两个对象: ContextMenu 对象用于产生一个新的菜单数组 ContextMenuItem 对象用于产生一个新的菜单项 对于它的具体使用我们先来看一个具体的效果: 对于它的实现,我把主要的代码给大家说明一下: my_menu = new ContextM

JavaScript 实现鼠标拖动元素实例代码

 这篇文章主要介绍了JavaScript 实现鼠标拖动元素实例代码,需要的朋友可以参考下 一.前言   最开始实现鼠标拖动元素的目的就是在一个页面上拖动很多小圆点,用于固定定位,然后在复制HTML,粘贴在页面的开发代码中,就是这么一个功能,实现了很多遍,都没有做好,不得已采用了jQuery.fn.draggable插件,在接触一些资料和别人的思路,今天终于把这个拖动功能给完善了,下面就来看看它的实现     二.设计思路   在拖动元素上绑定鼠标按下事件,在文档对象中绑定鼠标移动,鼠标弹起事件:

JavaScript 实现鼠标拖动元素实例代码_javascript技巧

一.前言 最开始实现鼠标拖动元素的目的就是在一个页面上拖动很多小圆点,用于固定定位,然后在复制HTML,粘贴在页面的开发代码中,就是这么一个功能,实现了很多遍,都没有做好,不得已采用了jQuery.fn.draggable插件,在接触一些资料和别人的思路,今天终于把这个拖动功能给完善了,下面就来看看它的实现  二.设计思路 在拖动元素上绑定鼠标按下事件,在文档对象中绑定鼠标移动,鼠标弹起事件:为什么不把三个事件都绑定在拖动元素上,这是因为鼠标移动太快时,鼠标移动和弹起事件处理程序将不会执行 复制

javascript实现简单的鼠标拖动效果实例_javascript技巧

本文实例讲述了javascript实现简单的鼠标拖动效果.分享给大家供大家参考.具体分析如下: 用鼠标拖动一个元素,放到网页的任意一个位置上,这是很常见的,例如很多博客模板版块位置可以自己拖动到相应位置. 下面先写一个简单的可以实现鼠标拖动的效果. 当鼠标按下的时候,记录鼠标当前位置和元素左边距离的差值. 当鼠标移动的时候,给元素的位置赋值,就是鼠标的位置,减去刚才的差值. 当鼠标放开的时候,给鼠标移动和鼠标放开赋值null,让它们不要再有任何动作. 要点一: disx = oevent.cli