首页 | QQ空间代码 | QQ空间大图 | QQ空间FLASH | QQ空间留言 | QQ空间音乐 | QQ空间教程 | QQ空间FD | QQ秘诀 | 软件攻略 | QQ资讯
您当前的位置:QQ空间代码网 -> 软件攻略 -> 文章内容
Flash软件制作MTV教程
作者:林  收藏QQ书签  发布时间:2007-6-13 14:09:13  
先看一效果:
 

 
 
效果:
 
 
 

 
教程如下:
 
 
效果:
 
 
 
学好FLASH不能光懂动画就可以还要学会制作脚本

 
学习简单的FLASH脚本运用
 
1.要学会制作空间FLASH那必须和按扭有关..因为你的FLASH上必须要有QQ空间导航..

   AS动作“按钮”添加鼠标事件

学习知识要点:

①为按钮添加鼠标事件;②为影片剪辑定义实例名;③大括号“{}”和点语法“.”;④“绝对路径”概念;⑤对象的后缀;⑥【语法提示】工具 、【插入目标路径】工具和【自动套用格式】工具 的应用。

要学习的语句是on()事件处理函数;指定触发动作的鼠标事件。
  语法格式:
  on (mouseEvent) {
  }
  “()”小括号中的mouseEvent参数是鼠标事件,常用的有以下几种鼠标事件:
  Press    当鼠标指针经过按钮时按下鼠标。
  release    当鼠标指针经过按钮时按下再释放鼠标按钮。
  releaseOutside 当鼠标指针在按钮之内时按下按钮后,将鼠标指针移到按钮之外,此时释放鼠标按钮。
  rollOut     鼠标指针滑出按钮区域。
  rollOver     鼠标指针滑过按钮。

 大括号“{}”:用来放置结合在一起依次执行的语句块,这里是当发生“release”鼠标(点击并释放)事件时执行令当前场景上的影片停止播放的动作。


点语法“.”:是基于“面向对象”的语法形式,就是利用目标对象本身去管理自己,用“.”语法通知目标对象执行什么指令是非常简洁的语法形式。


本节要认识的工具:
  【语法提示】工具
:小括号“()”里面的事件可以利用这个工具来输入,将光标放在小括号里,再点击【语法提示】工具,然后选中需要的事件双击鼠标就添加上了。同样,在输入了一个对象名后再输入".", 也会显示相关的属性和方法列表,比如在“_root.”后面也可以利用【语法提示】工具输入相关的参数。默认情况下,当Flash辨认出输入的代码所使用的语法时,这个功能会自动启动,如果Flash辨认不出,提示也就不会出现。






【自动套用格式】工具
:为增强代码的可读性,必须注意按照规范的语法格式来书写代码,可以利用工具栏上的【自动套用格式】工具来规范格式,方法是,将光标放在语句中,点击【自动套用格式】工具,代码即会按照规范的格式进行自动缩进等操作。




2.影片加鼠标事件:(如下效果:)

效果:
 
 
 
 
如上图,还是这只可爱的小松鼠在不知疲倦的来回奔跑,背景是我们已经熟悉了的动作面板,左下角显示了当前选择的对象是名称为“松鼠”的影片剪辑,这表明【代码编辑】窗口中显示的语句是直接添加在“松鼠”影片剪辑上的,注意,这个名称不是在“属性”面板中为对象指定的实例名,而是库中影片剪辑的名称。

把鼠标移到小松鼠上面,分别对照着画面上显示的鼠标事件来试试,可以看到,通过不同的鼠标事件,分别实现了控制场景播放以及影片剪辑播放的效果

动作很简单,我们来分析一下这一句:
  on (release) {
    play();
  }

 这个语句没有指明路径,当添加在按钮上时,它控制的是包含有按钮对象的当前时间轴,即按钮的父时间轴;当添加在影片剪辑对象上时,它控制的是影片剪辑对象自身的时间轴,由于控制自身时间轴不需要指明路径,因此也不必在“属性”面板中命名。
如果要在影片剪辑上添加控制当前场景的动作,则需要指明路径,如:
  on (rollOut) {
    _root.play();
  }

  如果要在按钮上添加控制位于同一场景的影片剪辑,则需要在属性面板中为影片剪辑命名,并指明路径,如:
  on (release) {
    _root.shu_mc.stop();
  }

  路径概念非常重要,在编写动作脚本时,如果路径的指向不正确,就实现不了预期的效果。

为影片剪辑添加动作的方法是,选中场景上要为其添加动作的影片剪辑,这时“动作”面板标题栏上显示的标题是“动作-影片剪辑”,这表明当前要为其添加脚本的对象是影片剪辑,然后在脚本编辑窗口中添加动作。

3.鼠标跟随AS动作:

① 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["xin_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影片剪辑的拖拽状态。

暂时到这里...希望大家顶一下...


 
根据学习的AS自己可以编写一个脚本

 
以下供大家参考..编写一个FLASHAS的下雪脚本

1.导入一张背景图片到舞台锁定!

2.新建图层二

3.选中图层二第一帧按F9(打开动作面版)粘贴下面语句,回车测试.OK,一帧搞定!
脚本如下:

fallSnow(this, 100, [550, 400]);
function fallSnow(path, num, size) {
for (var i = 0; i<num; i++) {
path.createEmptyMovieClip("s"+i, i);
var mc = path["s"+i];
mc._x = random(size[0]);
mc._y = random(size[1]);
mc.ro = [1, -1][random(2)];
mc.xtime = random(20);
mc.startTime = 0;
mc.id = Math.pow(i, 1/2);
createSnow(mc, mc.id/2.5, "0xffffff", 20*mc.id);
}
var loop = function () {
updateAfterEvent();
for (var i = 0; i<num; i++) {
var mc = path["s"+i];
mc._rotation += mc.ro*5;
mc._x += mc.id*mc.ro/10;
mc._y += mc.id/2;
mc.startTime++;
scanTar(mc);
scanEdge(mc, size);
}
};
var interval = setInterval(loop, 10);
}
function createSnow(mc, radius, c, alpha) {
with (mc) {
moveTo(0, -radius);
beginFill(c, alpha);
lineStyle(0, "0x000000", 0);
for (var i = 1; i<=6; i++) {
var a1 = -Math.PI/6+i*Math.PI/3;
var a2 = i*Math.PI/3;
lineTo((radius/5)*Math.sin(a1), -(radius/5)*Math.cos(a1));
lineTo(radius*Math.sin(a2), -radius*Math.cos(a2));
}
endFill();
}
}
function scanTar(mc) {
if (mc.startTime>=mc.xtime) {
mc.startTime = 0;
mc.xtime = random(20);
mc.ro = [1, -1][random(2)];
}
}
function scanEdge(mc, size) {
if (mc._x>size[0]) {
mc._x = 0;
} else if (mc._x<0) {
mc._x = size[0];
}
if (mc._y>size[1]) {
mc._y = 0;
}
}

 
以下是我做了一个视频做FLASHMTV的歌词定位的教程:
 
 
效果:
 
 
 
 
加林的QQ号:64964771 学习QQ空间最新的制作



帮你打造一流的非主流风格的唯美QQ空间 想成成为非主流达人就这么简单
版权所有: - 网站地图 -
Copyright © 2006-2008 QQ空间代码网 All Rights Reserved